Re: [BUG] git diff-tree --stdin doesn't accept two trees
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 5, 2008, 20:07 UTC
- Message-ID
- <7vwsivusy2.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <20080805164839.GA3934@diana.vm.bytemark.co.uk>
Karl Hasselström <kha@treskal.com> writes:
Show 19 quoted lines
> I'm trying to use diff-tree --stdin to diff several trees in one go.
> But I just get error messages when I feed it two space-separated trees
> (one commit works fine):
>
> $ echo $(git rev-parse HEAD^{tree}) $(git rev-parse HEAD^^{tree}) | git diff-tree -p --stdin
> error: Object 7bfd9971f77438858e412be0219ec78afb3ca46f not a commit
>
> This is at odds with the documentation:
>
> --stdin::
> When '--stdin' is specified, the command does not take
> <tree-ish> arguments from the command line. Instead, it
> reads either one <commit> or a pair of <tree-ish>
> separated with a single space from its standard input.
>
> I tried reading the code to figure out what's wrong, and as far as I
> can tell the code to do this is there, but seems to be protected by
> logic that aborts everything unless the whole input line is a valid
> commit. Or maybe I'm just confused ...No, the documentation was made wrong during 1.2.0 timeperiod.
The feature of --stdin to take a commit and its parents on one line was broken before that to support the common
rev-list --parents $commits... -- $paths... |
diff-tree --stdin -v -pusage pattern by Porcelains. For diff-tree to talk sensibly about commits, it needs to see commits, not just trees.