From: James Spencer <jss43@cam.ac.uk>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org
Subject: Re: diff-files inconsistency with touched files
Date: Thu, 03 Sep 2009 17:18:54 +0100 [thread overview]
Message-ID: <4A9FEC6E.9030904@cam.ac.uk> (raw)
In-Reply-To: <20090902192820.GE6900@coredump.intra.peff.net>
Jeff King wrote:
> On Wed, Sep 02, 2009 at 06:27:15PM +0100, James Spencer wrote:
>
>> $ git diff-files
>> $ touch test
>> $ git diff-files
>> :100644 100644 9daeafb9864cf43055ae93beb0afd6c7d144bfa4
>> 0000000000000000000000000000000000000000 M test
>> $ git diff
>> $ git diff-files
>> $
>>
>> I don't understand why git diff-files reports a file is changed when
>> that file is touched nor why running git diff changes this to (what I
>> think is) the correct behaviour.
>
> Git uses the stat information of a file to know whether what we have
> cached in the index is up-to-date or not. So in the first diff-files, we
> don't even have to look at the contents of "test"; we see that it hasn't
> changed since the last time we looked at the contents, and that its
> sha-1 matches what's in the index, so there is no diff.
>
> By running "touch", you have changed the stat information, so we believe
> there may be a difference. But we don't actually know what's _in_ the
> new side, so we just print the null sha1 instead of the actual sha1
> contents.
>
> Diff-files _could_ refresh the cache each time it runs, but we
> intentionally do not do that. Doing so is a little bit expensive, and
> because diff-files is intended as a low-level tool for scripts, we give
> the script the flexibility (and responsibility) of refreshing the cache
> when it wants to. So you could do:
>
> $ git update-index --refresh
> $ git diff-files
>
> and get clean output.
>
> You see different behavior from "git diff" because it is meant for user
> consumption and therefore refreshes the cache automatically at the
> beginning of every run.
>
> -Peff
Thanks for your help!
--James
prev parent reply other threads:[~2009-09-03 16:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-02 17:27 diff-files inconsistency with touched files James Spencer
2009-09-02 19:28 ` Jeff King
2009-09-03 16:18 ` James Spencer [this message]
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=4A9FEC6E.9030904@cam.ac.uk \
--to=jss43@cam.ac.uk \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.