The problem is I can't reproduce this bug if create some other files which have the same size and timestamp. It only happens on several files in my project. And it's even more frustrating that I can't send these files to the mailing list since it is a proprietary source file. On Fri, Mar 28, 2014 at 9:59 AM, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: > (cc-ing msysgit list, where there are more Windows-knowledgeable people) > yun sheng wrote: >> On Fri, Mar 28, 2014 at 9:40 AM, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: >>> yun sheng wrote: > >>>> these two files have the same timestamp, the same size, bug slightly >>>> different contents. >>> >>> How did they get the same timestamp? >>> >>> [...] >>>> Git I'm using is msysgit 1.9.0 on windows 7 >>> >>> Unixy operating systems have other fields like inode number and ctime >>> that make it possible to notice that a file might have been changed >>> without actually rereading it. Unfortunately Git for Windows is >>> limited to what's in the WIN32_FILE_ATTRIBUTE_DATA which means the >>> size, mtime, and mode are basically all it has to go by. >>> >>> Do you know of some other Windows API call that could help? >> >> The files get the same timestamp by using `git difftool -d` to view >> diffs, the diff tool I use id beyond compare 3, this command would >> generate temp files to feed the compare program, so these files get >> the same time stamp, I copied them out from the temp folder. >> >> I have no idea of the second quesiton, I am really not familiar with >> windows API. Do you mean this file may have been changed without >> rereading and git can't detect it? > > Sorry for the lack of clarity. I meant that normally git detects when > a file might have been changed without actually reading the file. To > do this, it uses heuristics like "If all file attributes are > unchanged, the file is unchanged" which tend to work well on Unix. My > question was whether there's some similar trick that could work better > on Windows than the current code. > > For example, if some interested person ports something like Facebook's > watchman[1] to Windows[2], then Git could take advantage of that work > using something like Duy's file-watcher series[3], which would be one > way to fix this problem. > > Thanks, > Jonathan > > [1] https://github.com/facebook/watchman > [2] using FindFirstChangeNotification and ReadDirectoryChangesW, perhaps > [3] http://thread.gmane.org/gmane.comp.version-control.git/240339/focus=241395> -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html