On Fri, Mar 03, 2023 at 09:13:27AM -0800, Junio C Hamano wrote: > John Keeping <john@xxxxxxxxxxxxx> writes: > > > When formatting an empty commit, it is surprising that a totally empty > > file is generated. Set the flag to always print the header, matching > > the behaviour of git-log. > > Don't these empty files help send-email as safety against sending > them out? Unless existing tools depend on the current behaviour in > such a way, I think this is quite a sensible change. Yes, send-email fails trying to send an empty file, but to me this feels more like an accident than an intentional safeguard. If there were something intentional I'd expect format-patch to fail with --allow-empty as an option to bypass that safety check. Since there are checks in place to avoid unintentionally creating empty commits, it seems reasonable for format-patch to create output that represents what is present in the repository without needing extra options. > > diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh > > index f3313b8c58..ffc7c60680 100755 > > --- a/t/t4014-format-patch.sh > > +++ b/t/t4014-format-patch.sh > > @@ -59,6 +59,10 @@ test_expect_success setup ' > > test_tick && > > git commit -m "patchid 3" && > > > > + git checkout -b empty main && > > + test_tick && > > + git commit --allow-empty -m "empty commit" && > > + > > git checkout main > > ' > > > > @@ -128,6 +132,12 @@ test_expect_success 'replay did not screw up the log message' ' > > grep "^Side .* with .* backslash-n" actual > > ' > > > > +test_expect_success 'format-patch empty commit' ' > > + git format-patch --stdout main..empty >empty && > > + grep "^From " empty >from && > > + test_line_count = 1 from > > +' > > + > > test_expect_success 'extra headers' ' > > git config format.headers "To: R E Cipient <rcipient@xxxxxxxxxxx> > > " &&