Re: [RFC PATCH] diff: add option to report binary files in raw diffs
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 7, 2025, 16:07 UTC
- Message-ID
- <xmqq7bw1hllz.fsf@gitster.g>
- In-Reply-To
- <20251107083015.GA18670@tb-raspi4>
Torsten Bögershausen <tboegi@web.de> writes:
Show 15 quoted lines
> git ls-files --eol option someone (Junio ?) convinced my to > use a TAB as a seperator. > In this case just before the filename: > > git ls-file --eol | xxd > 00000000: 692f 6c66 2020 2020 772f 6c66 2020 2020 i/lf w/lf > 00000010: 6174 7472 2f20 2020 2020 2020 2020 2020 attr/ > 00000020: 2020 2020 2020 092e 6369 7272 7573 2e79 ..cirrus.y > ^^ > 00000030: 6d6c 0a ml. > > This makes the output both human readable and machine parsable: > All info is before the TAB here. (And may be parsed again in a second > round, if needed). > Thoughts ?
This brings up another interesting question: which command should learn these new classifications.
The original desire "when I diff A and B, I cannot tell which one of A or B had binary when I see 'binary file differs'" almost suggests to me that 'diff' is a wrong place and rather they wanted to know "I have A; now who is binary in there?" Or "when I diff A and B with pathspec P, I cannot tell..." is probably a wrong question to ask, and the question may be "I have A; now who is binary in that tree within pathspec P?"
IOW, "git show" or "git log", when showing a commit C in the history, would give "that one is a binary" information as if it is an attribute of the change between commit C and its parents, if you tuck this new logic into the "diff" machinery. I am not sure if that is what we really want. If we do so in "ls-tree" and allow "git log" to show characteristics of each tree it encounters while traversing the history, on the other hand, "that one is a binary" would truly become an attribute of an entry in a tree, and it is not affected by what is in the trees of the commits that are adjacent to the commit in the history.