Re: git format-patch produces invalid patch if the commit adds an empty file?
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 19, 2021, 21:09 UTC
- Message-ID
- <xmqq5yw1ywdk.fsf@gitster.g>
- In-Reply-To
- <02be6a48411fa100e7d1292fc312f7fcf571f334.camel@redhat.com>
Adam Williamson <awilliam@redhat.com> writes:
Show 18 quoted lines
> Hi folks! So I ran into an odd issue with git today. I'm kinda > surprised I can't find any prior discussion of it, but oh well. The > situation is this: I ran git format-patch on a commit that adds three > empty files to a repository - this commit: > https://github.com/mesonbuild/meson/commit/5c87167a34c6ed703444af180fffd8a45a7928ee > the relevant lines from the patch file it produced look like this: > > === > > diff --git a/test cases/common/56 array methods/a.txt b/test cases/common/56 array methods/a.txt > new file mode 100644 > index 000000000..e69de29bb > diff --git a/test cases/common/56 array methods/b.txt b/test cases/common/56 array methods/b.txt > new file mode 100644 > index 000000000..e69de29bb > diff --git a/test cases/common/56 array methods/c.txt b/test cases/common/56 array methods/c.txt > new file mode 100644 > index 000000000..e69de29bb
I do not have very ancient build of Git handy, but I know Git as old as v1.3.0 (which I consider is one of the two versions of historical importance, the other being v1.5.3) behaved this way and we haven't changed it ever since, so I am surprised too to learn that "GNU patch" cannot grok it. Even though you didn't mention it, am I correct to assume that "patch" has a similar issue with a change that removes an empty file?
I do not think our patch injestion machinery in "git apply" minds if we added the "--- /dev/null" + "+++ b/<path>" headers (and the reverse for removal of an empty file) to the current output, and I am not fundamentally opposed to such a change.
But because it is such a rare event (and a discouraged practice) to record a completely empty file, I wouldn't place a high priority on doing so myself.
Thanks.