Subject: Re: [RFC PATCH] diff: add option to report binary files in raw diffs

From: Junio C Hamano <[email-masked]>
Date: Mon, 03 Nov 2025 18:26:20 -0800

Justin Tobler <[email-masked]> writes:

> I have a usecase where I would like to know exactly which files in a
> diff pair are considered binary by Git when computing diffs. When
> computing patch diff output, Git already omits filepair diffs where at
> least one side is considered binary and prints a "binary files differ"
> message instead. From this message we cannot discern exactly which files
> were considered binary by Git though.

I have a usecase where I would like to know exactly which side of a
diff filepair ends in an incomplete line in a concise format.

Should we add yet another column to the raw output to indicate who
is complete and who is incomplete?

Where does it lead us and when will it stop?

IOW, yuck ;-).

> In this patch, the raw diff format is extended with a
> `--report-binary-files` option to explicitly specify which files in the
> diff pair were considered binary. The output in this form looks
> something like this:
>
>         $ git diff-tree --abbrev=8 --report-binary-files HEAD~ HEAD
>         :100644 100644 a1961526 e231acb1 bt M	foo
>         :100644 100644 31eedd5c 402a70d7 bb M	bar
>
> With this format, there is a new column before the status that specifies
> the binary status for each file. 'b' indicates binary and 't' is used
> otherwise.

How will would this extend beyond 2-way diffs, I wonder.  
Should 

    $ git show -c --report-binary <a merge>

show [bt]{3} instead of [bt]{2} before the change status letter?