Thanks, very helpful.

What I'm actually after is a tree-to-filesystem comparison, regardless
of index. I've currently got a "diff" thrown in as a "work-around"
before "diff-index", but  now I understand it's not a workaround at
all. If there's a better way to achieve what I'm after, I'd appreciate
a tip. Otherwise I'll just change the comments explaining why there's
a "diff" in my script.

andy

> > 5. git diff correctly reports no changes > 6. git diff-index now also 
> reports nothing This is working as designed (though I agree it is a little 
> confusing). From "git help diff-index": These commands all compare two sets 
> of things; what is compared differs: git-diff-index  compares the  and the 
> files on the filesystem. git-diff-index --cached  compares the  and the 
> index. git-diff-tree [-r]   [...] compares the trees named by the two 
> arguments. git-diff-files [...] compares the index and the files on the 
> filesystem. Your invocation triggers the first, though it is not a true 
> comparison of what is on the filesystem, but rather a tree/index comparison, 
> taking into account the filesystem values. The all-zeroes sha1 indicates that 
> the index entry is not up to date with what is in the filesystem, but we 
> don't actually read the file contents to refresh the entry. Back when 
> diff-index was written, it was generally assumed that scripts would refresh 
> the index as their first operation, and then proceed to do one or more 
> operations like diff-index, which would rely on the refresh from the first 
> step. Running the porcelain "git diff" does refresh the index, which is why 
> your step 6 shows no diff. If you want a pure tree-to-index comparison, use 
> --cached (this will also be slightly faster, as it does not have to stat the 
> working tree at all). -Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to