Re: Force git diff to create a binary patch?
From: Junio C Hamano <hidden>
Date: 2020-07-14 15:35:59
Jason Xu [off-list ref] writes:
quoted
The "--binary" option was invented as a way to tell Git to produce something that can be applied, where Git stopped at saying "binary files differ".Doesn't `--text` already do that? Albeit with whitespace warnings.
I do not think so. --text is about forcing everything to be treated text, so you'll not see binary patches but the patch-looking thing with binary garbage you wrote in the message that started this thread. IOW, that is the opposite of what you want. And I agree that such a "diff -a" output is prone to corruption during transfer (e.g. over e-mail) and a way to tell exactly which paths should be shown as binary patches is a good thing to have.
That's why I propose better binary file detection, instead of (what I understand to be) "make all patches in a patch file GIT binary patches, regardless if a file is text".
Oh, I agree that "treat everything as binary and produce binary patch for all paths" is a nonsense option no sane person would want to use. The users are better off exchanging bundles at that point, as such a binary-only patches are unreadable anyway. There is no "better detection"; the only thing you could get is "better heuristics" and there will always be a limit to what heuristics can do for you. And that is why you were given gitattributes very early in the discussion ;-) That is the mechanism to tell exactly which paths should be treated as binary.