git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] format-patch: output header for empty commits

From
John Keeping <john@keeping.me.uk>
Date
Mar 3, 2023, 16:03 UTC
Message-ID
<20230303160301.3659328-1-john@keeping.me.uk>

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.

Signed-off-by: John Keeping <john@keeping.me.uk>
---
 builtin/log.c           |  1 +
 t/t4014-format-patch.sh | 10 ++++++++++
 2 files changed, 11 insertions(+)
diff --git a/builtin/log.c b/builtin/log.c
index a70fba198f..87b4fb2edc 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -2097,6 +2097,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 
 	/* Always generate a patch */
 	rev.diffopt.output_format |= DIFF_FORMAT_PATCH;
+	rev.always_show_header = 1;
 
 	rev.zero_commit = zero_commit;
 	rev.patch_name_max = fmt_patch_name_max;
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@example.com>
 " &&
-- 
2.39.2
Next: Junio C Hamano
Message 1 of 6 in “format-patch: output header for empty commits”
  1. format-patch: output header for empty commitsJohn Keeping, Mar 3, 2023
  2. Junio C HamanoMar 3, 2023
  3. John KeepingMar 4, 2023
  4. Junio C HamanoMar 6, 2023
  5. John KeepingMar 8, 2023
  6. Junio C HamanoMar 8, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.