From: Jonathan Nieder <jrnieder@gmail.com>
To: yun sheng <uewing@gmail.com>
Cc: git@vger.kernel.org, msysgit@googlegroups.com
Subject: Git doesn't notice file has changed (Re: Found a "bug" in git 1.9.0 but can't reproduce it without copyrighted source code.)
Date: Thu, 27 Mar 2014 18:59:21 -0700 [thread overview]
Message-ID: <20140328015921.GP15625@google.com> (raw)
In-Reply-To: <CA+fYBFcqZtCxRjAiZk24VJutc_QT5asQU8EFRKpd0ZYqoN4=1g@mail.gmail.com>
(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@gmail.com> 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>
next prev parent reply other threads:[~2014-03-28 1:59 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-28 0:45 Found a "bug" in git 1.9.0 but can't reproduce it without copyrighted source code yun sheng
2014-03-28 1:04 ` Trần Ngọc Quân
[not found] ` <CA+fYBFdsp4z5T42wEiQ-0X88eK4UhJLx+Ofum_RYEf-g8a3SbA@mail.gmail.com>
2014-03-28 1:40 ` Fwd: " yun sheng
2014-03-28 1:40 ` Jonathan Nieder
2014-03-28 1:45 ` yun sheng
2014-03-28 1:59 ` Jonathan Nieder [this message]
2014-03-28 2:06 ` Git doesn't notice file has changed (Re: Found a "bug" in git 1.9.0 but can't reproduce it without copyrighted source code.) yun sheng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140328015921.GP15625@google.com \
--to=jrnieder@gmail.com \
--cc=git@vger.kernel.org \
--cc=msysgit@googlegroups.com \
--cc=uewing@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).