Re: [RFC PATCH] diff: add option to report binary files in raw diffs
From: Junio C Hamano <hidden>
Date: 2025-11-07 16:07:55
Torsten Bögershausen [off-list ref] writes:
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.