# git diff-tree output inconsistency?

2 messages from 2011-04-07 to 2011-04-07. Participants: Arjen Laarhoven, Jeff King.
Thread: https://gitlist.dev/t/27016

## Arjen Laarhoven, 2011-04-07 13:59

Subject: git diff-tree output inconsistency?
Message-ID: <20110407135938.GA322@regex.yaph.org>
URL: https://gitlist.dev/e/20110407135938.GA322%40regex.yaph.org

```
Hi all,

I was fiddling with the git-diff-tree command to retrieve a list of
files which have in a commit:

$ git diff-tree --name-only HEAD

According to the documentation, the output starts with the SHA-1 of the
tree-ish given, after which the list of changed files follows.  This is
the case when just one commit-id is given.

However, when given 2 tree-ish objects, the separate line with the SHA-1
is not shown.

I browsed through the code and the history for diff-tree.c, but couldn't
find an explanation for the inconsistency.  The documentation for the
--no-commit-id confuses me a bit more, as it states that the commit id
is shown 'when applicable'.  Unfortunately, it fails to explain when
exactly that is :-)

Have I found a documentation bug/shortcoming, is it a code bug or am I
misunderstanding something else?

Arjen

-- 
Arjen Laarhoven

The presence of those seeking the truth is infinitely to be preferred to 
those who think they've found it.
                                -- Terry Pratchett, "Monstrous Regiment"

```

## Jeff King, 2011-04-07 19:08

Subject: Re: git diff-tree output inconsistency?
Message-ID: <20110407190832.GA18842@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20110407190832.GA18842%40sigill.intra.peff.net
In-Reply-To: <20110407135938.GA322@regex.yaph.org>

```
On Thu, Apr 07, 2011 at 03:59:38PM +0200, Arjen Laarhoven wrote:

> I was fiddling with the git-diff-tree command to retrieve a list of
> files which have in a commit:
> 
> $ git diff-tree --name-only HEAD
> 
> According to the documentation, the output starts with the SHA-1 of the
> tree-ish given, after which the list of changed files follows.  This is
> the case when just one commit-id is given.
> 
> However, when given 2 tree-ish objects, the separate line with the SHA-1
> is not shown.
> 
> I browsed through the code and the history for diff-tree.c, but couldn't
> find an explanation for the inconsistency.  The documentation for the
> --no-commit-id confuses me a bit more, as it states that the commit id
> is shown 'when applicable'.  Unfortunately, it fails to explain when
> exactly that is :-)
> 
> Have I found a documentation bug/shortcoming, is it a code bug or am I
> misunderstanding something else?

I think it's a documentation bug. The sha1 is shown only when a single
tree-ish is given (either on the command line, or via --stdin). This is
a historical behavior, as one of the original uses of diff-tree was
to implement log as:

  git rev-list | git diff-tree --stdin

You can even do "git diff-tree --stdin --pretty=medium" to get the full
log-ish output.  These days, though, log does everything in one process.

But I don't think we make that clear anywhere in the diff-tree manpage.

-Peff

```
