On 11.03.2013, at 23:54, Andrew Wong wrote:

> On 3/11/13, Max Horn <m...@quendi.de> wrote:
>> Looking at the git config man page to check what each of my config settings
>> does, I discovered "trustctime". And adding
>>      trustctime = false
>> to .git/config made the rebase work, every single time. Huh.
>> Adding this to the fact that a clone works fine, I wonder if  something *is*
>> touching my files, but just in that directory. But what could it be? One
>> nagging suspicion is the "file versioning" feature Apple introduced as part
>> of Time Machine in OS X 10.7; it's kind of a "version control system for
>> n00bs" for arbitrary documents. It has caused me some pain in the past.
>> But I just re-checked, and problematic repos is explicitly on the Time
>> Machine exclusion list. I also used the "tmutil isexcluded FILES" to verify
>> that the problematic files are really on the TM exclusion list. Finally, I
>> moved the one of the repos subdirectory containing most of the problematic
>> files, and then run "git checkout". In other instances, this sufficed to
>> "disassociate" a file from an unwanted TM version history. But doing that
>> had no effect here, i.e. also with the freshly regenerated files, the
>> problems appear.
> Would you be able to turn off Time Machine completely and do a few
> tests? If it does works, then it becomes a matter of fixing Time
> Machine...

I did turn it off just now, but no effect. Then again, daemons like revisiond 
were still running...

One more thing: I used the "fs_usage" to monitor what process accessed what 
file during one of those failing "git rebase" runs. I then searched through 
this to determine which processes accessed the "bad" file in this time. The 
result where these processes (aggregated):


Note that Time Machine was not running, but revisiond is... from its manpage:

     revisiond is the daemon that manages document revisions created by 
applications and system services.

     There are no configurations to revisiond, and users should not run 
revisiond manually.

This is the process I am suspecting. Specifically, a fchflags call it makes 
(see that attached excerpt of the fs_usage output). I am not sure, but my guess 
would be that it sets SF_ARCHIVED on the file. Causing its ctime to wander... 

But I don't know how to control it... and I am not sure if I can just kill it. 
Hrm. I'll try to dig some more into it, perhaps I can somehow confirm that this 
is *really* the cause of the problems, and somehow prevent it.


00:59:54.349156  lstat64                                src/BAD_FILE            
                                 0.000050   git.623953
00:59:54.349160  open              F=5        (R_____)  src/BAD_FILE            
                                 0.000004   git.623953
00:59:54.350659  close             F=5                                          
                                 0.000007   git.623953
00:59:54.371716  lstat64                                src/BAD_FILE            
                                 0.000002   git.623955
00:59:54.429674  lstat64                                src/BAD_FILE            
                                 0.000002   git.623959
00:59:54.600060  lstat64                                src/BAD_FILE            
                                 0.000007   git.623959
00:59:54.600151  stat64                                 
/Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000006   
00:59:54.600154  stat64                                 
/Users/mhorn/the-path-to-my-repository/src               0.000003   
00:59:54.600160  open              F=7        (R_____)  
/Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000006   
00:59:54.600161  fstatfs64         F=7                                          
                                 0.000002   revisiond.623963
00:59:54.600163  close             F=7                                          
                                 0.000002   revisiond.623963
00:59:54.600387  unlink                                 src/BAD_FILE            
                                 0.000328 W git.623959
00:59:54.600429  open              F=5        (_WC__E)  src/BAD_FILE            
                                 0.000039   git.623959
00:59:54.602910  write             F=5    B=0x4000                              
                                 0.000040   git.623959
00:59:54.602932  write             F=5    B=0x4000                              
                                 0.000017   git.623959
00:59:54.602947  write             F=5    B=0x4000                              
                                 0.000011   git.623959
00:59:54.602958  write             F=5    B=0x4000                              
                                 0.000009   git.623959
00:59:54.602969  write             F=5    B=0x4000                              
                                 0.000009   git.623959
00:59:54.602977  write             F=5    B=0x12f5                              
                                 0.000007   git.623959
00:59:54.602983  fstat64           F=5                                          
                                 0.000004   git.623959
00:59:54.603032  close             F=5                                          
                                 0.000049   git.623959
00:59:54.621731  lstat64                                
/Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000004   
00:59:54.882870  lstat64                                src/BAD_FILE            
                                 0.000002   git.623993
00:59:54.882872  open              F=5        (R_____)  src/BAD_FILE            
                                 0.000003   git.623993
00:59:54.883042  close             F=5                                          
                                 0.000002   git.623993
00:59:55.021956  lstat64                                src/BAD_FILE            
                                 0.000003   git.624027
00:59:55.021959  open              F=4        (R_____)  src/BAD_FILE            
                                 0.000003   git.624027
00:59:55.022138  close             F=4                                          
                                 0.000003   git.624027
00:59:56.600440  open              F=7        (R_____)  
/Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000014   
00:59:56.600442  fcntl             F=7   <GETPATH>                              
                                 0.000002   revisiond.623963
00:59:56.600445  close             F=7                                          
                                 0.000004   revisiond.623963
00:59:56.600449  stat64                                 
/Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000004   
00:59:56.600452  stat64                                 
/Users/mhorn/the-path-to-my-repository/src               0.000003   
00:59:56.600455  open              F=7        (R_____)  
/Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000004   
00:59:56.600457  fstatfs64         F=7                                          
                                 0.000002   revisiond.623963
00:59:56.600459  close             F=7                                          
                                 0.000002   revisiond.623963
00:59:56.600687  open              F=7        (R_____)  
/Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000006   
00:59:56.600688  fstat64           F=7                                          
                                 0.000002   revisiond.623963
00:59:56.600698  fchflags          F=7   <UNKNOWN>       [garbled output 
removed]                                0.000010   revisiond.623963
00:59:56.600701  close             F=7                                          
                                 0.000003   revisiond.623963
00:59:56.624161  lstat64                                
/Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000004   
00:59:56.981172  lstat64                                src/BAD_FILE            
                                 0.000004   git.624517
00:59:57.015622  lstat64                                src/BAD_FILE            
                                 0.000005   git.624527
00:59:57.118844  lstat64                                src/BAD_FILE            
                                 0.000005   git-merge-recurs.624544
01:00:00.194634  lstat64                                src/BAD_FILE            
                                 0.000002   git.624580
01:00:00.194637  open              F=5        (R_____)  src/BAD_FILE            
                                 0.000003   git.624580
01:00:00.194815  close             F=5                                          
                                 0.000003   git.624580

Reply via email to