threads / discuss / 21312

confusion with git diff-tree output

Subject: confusion with git diff-tree output

## tl;dr

7 messages between Oct 21, 2009 and Oct 24, 2009.

replies: 6people: 4as markdown or json

David Roundy· Oct 21, 2009, 17:43 UTC · lore
Hi all,

I've been struggling with trying to figure out how to make diff-tree output the actual files changed. Below is the output when I run diff-tree on a given commit. It reports that the directory is modified, rather than that a single file within that directory is modified. I can find out what *file* was modified by running diff-tree -p --raw, which gives me output similar to what I expected from a plain old diff-tree. Is there a flag that will make diff-tree give this information?

As background, what I really want is --name-only, which rarely reports the files modified, instead reporting the directories as modified, and I've been struggling to figure out what is going on. The documentation seems to imply that the --raw diff output will report modified files, and I haven't found anything indicating when it would report the directories containing the modified files instead.

Thanks! David

$ git diff-tree fd99a198222c14cf42fee82087a13467ff4a8205 fd99a198222c14cf42fee82087a13467ff4a8205 :040000 040000 8cdb796ea801da99c34d8f60045d8eb08fbb0e41 66b67ea1763799c0b2ac01f6803177ca870f6544 M Iolaus

$ git diff-tree fd99a198222c14cf42fee82087a13467ff4a8205 -p --raw fd99a198222c14cf42fee82087a13467ff4a8205 :100644 100644 dab4c531f3f69f08e5dc202ad8b6dfad9e8855fe 0e3f305e641a6440bb478765dfcd089e0420c155 M Iolaus/Lcs2.hs

diff --git a/Iolaus/Lcs2.hs b/Iolaus/Lcs2.hs
index dab4c53..0e3f305 100644
--- a/Iolaus/Lcs2.hs
+++ b/Iolaus/Lcs2.hs
(changes cut)
Jan Krüger· Oct 21, 2009, 17:51 UTC · re: David Roundy · lore

Re: confusion with git diff-tree output

> David Roundy <roundyd@physics.oregonstate.edu> wrote:
Show 5 quoted lines
> I've been struggling with trying to figure out how to make diff-tree
> output the actual files changed.  Below is the output when I run
> diff-tree on a given commit.  It reports that the directory is
> modified, rather than that a single file within that directory is
> modified.
Tree objects are recursively nested, i.e.
> 66b67ea1763799c0b2ac01f6803177ca870f6544 M	Iolaus

is a reference to another tree object... and since a file in that subtree changed, a new tree object that contains a different file record is now referenced as "Iolaus".

By default git diff-tree doesn't recurse, but you can use -r for that. Which is documented, I might add. ;)

Jan
David Roundy· Oct 21, 2009, 22:23 UTC · re: Jan Krüger · lore

Re: confusion with git diff-tree output

You're right. I figured I must be overlooking something obvious, and that was it. What surprised me was that -p implies -r, which is not documented. Since the -p output was recursive, I incorrectly presumed that this was the default.

David
On Wed, Oct 21, 2009 at 1:51 PM, Jan Krüger <jk@jk.gs> wrote:
Show 10 quoted lines
> Tree objects are recursively nested, i.e.
>
>> 66b67ea1763799c0b2ac01f6803177ca870f6544 M    Iolaus
>
> is a reference to another tree object... and since a file in that
> subtree changed, a new tree object that contains a different file
> record is now referenced as "Iolaus".
>
> By default git diff-tree doesn't recurse, but you can use -r for that.
> Which is documented, I might add. ;)
Jan Krüger· Oct 21, 2009, 22:42 UTC · re: David Roundy · lore

Re: confusion with git diff-tree output

> David Roundy <roundyd@physics.oregonstate.edu> wrote:
> You're right.  I figured I must be overlooking something obvious, and
> that was it.  What surprised me was that -p implies -r, which is not
> documented.  Since the -p output was recursive, I incorrectly presumed
> that this was the default.

I suppose that's because you can't really display the diff for a directory in any meaningful way other than recursing.

Jan
Jeff King· Oct 23, 2009, 00:54 UTC · re: David Roundy · lore

Re: confusion with git diff-tree output

On Wed, Oct 21, 2009 at 06:23:08PM -0400, David Roundy wrote:
> You're right.  I figured I must be overlooking something obvious, and
> that was it.  What surprised me was that -p implies -r, which is not
> documented.  Since the -p output was recursive, I incorrectly presumed
> that this was the default.
It's due to hysterical raisins:
  http://article.gmane.org/gmane.comp.version-control.git/54078
-Peff
Junio C Hamano· Oct 24, 2009, 06:36 UTC · re: Jeff King · lore

Re: confusion with git diff-tree output

Jeff King <peff@peff.net> writes:
Show 10 quoted lines
> On Wed, Oct 21, 2009 at 06:23:08PM -0400, David Roundy wrote:
>
>> You're right.  I figured I must be overlooking something obvious, and
>> that was it.  What surprised me was that -p implies -r, which is not
>> documented.  Since the -p output was recursive, I incorrectly presumed
>> that this was the default.
>
> It's due to hysterical raisins:
>
>   http://article.gmane.org/gmane.comp.version-control.git/54078

Just to make sure, the Porcelain "diff" does recurse even with --raw and "diff-tree" doesn't for historical reasons, right?

Jeff King· Oct 24, 2009, 09:51 UTC · re: Junio C Hamano · lore

Re: confusion with git diff-tree output

On Fri, Oct 23, 2009 at 11:36:59PM -0700, Junio C Hamano wrote:
Show 11 quoted lines
> >> You're right.  I figured I must be overlooking something obvious, and
> >> that was it.  What surprised me was that -p implies -r, which is not
> >> documented.  Since the -p output was recursive, I incorrectly presumed
> >> that this was the default.
> >
> > It's due to hysterical raisins:
> >
> >   http://article.gmane.org/gmane.comp.version-control.git/54078
> 
> Just to make sure, the Porcelain "diff" does recurse even with --raw 
> and "diff-tree" doesn't for historical reasons, right?
Yes, that's right (and yes, I just checked it to be double sure).
-Peff

← back to recent threads