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

[PATCH v2] format-patch: fix From header in cover letter

From
Mirko Faina <mroik@delayed.space>
Date
Feb 16, 2026, 15:27 UTC
Message-ID
<20260216152730.37478-1-mroik@delayed.space>
In-Reply-To
<aZAMr6XOwKkTa55q@exploit>

"git format-patch" takes "--from=<user ident>" command line option and uses the given ident for patch e-mails, but this is not applied to the cover letter, the option is ignored and the committer ident of the current user is used.

Teach the make_cover_letter() function to honor the option, instead of always using the current committer identity.

Signed-off-by: Mirko Faina <mroik@delayed.space>
---
I'm sorry about the poor quality of the previous commit message, I
realise it did a poor job at explaining what the patch did.

I've applied the changes you suggested and wrote the test. Thank you for the review.

 builtin/log.c           |  6 +++---
 t/t4014-format-patch.sh | 12 ++++++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/builtin/log.c b/builtin/log.c
index d43ca693bf..42648dda54 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1332,7 +1332,7 @@ static void make_cover_letter(struct rev_info *rev, int use_separate_file,
 			      int quiet,
 			      const struct format_config *cfg)
 {
-	const char *committer;
+	const char *from;
 	struct shortlog log;
 	struct strbuf sb = STRBUF_INIT;
 	int i;
@@ -1345,7 +1345,7 @@ static void make_cover_letter(struct rev_info *rev, int use_separate_file,
 	if (!cmit_fmt_is_mail(rev->commit_format))
 		die(_("cover letter needs email format"));
 
-	committer = git_committer_info(0);
+	from = cfg->from ? cfg->from : git_committer_info(0);
 
 	if (use_separate_file &&
 	    open_next_file(NULL, rev->numbered_files ? NULL : "cover-letter", rev, quiet))
@@ -1368,7 +1368,7 @@ static void make_cover_letter(struct rev_info *rev, int use_separate_file,
 	pp.date_mode.type = DATE_RFC2822;
 	pp.rev = rev;
 	pp.encode_email_headers = rev->encode_email_headers;
-	pp_user_info(&pp, NULL, &sb, committer, encoding);
+	pp_user_info(&pp, NULL, &sb, from, encoding);
 	prepare_cover_text(&pp, description_file, branch_name, &sb,
 			   encoding, need_8bit_cte, cfg);
 	fprintf(rev->diffopt.file, "%s\n", sb.buf);
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 21d6d0cd9e..cb04a9c47b 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -1472,6 +1472,18 @@ test_expect_success '--from uses committer ident' '
 	test_cmp expect patch.head
 '
 
+test_expect_success '--from applies to cover letter' '
+	echo "This is a test text" >file_to_commit &&
+	git format-patch -1 --stdout --cover-letter --from="Foo Bar <author@example.com>" >patch &&
+	cat >expect <<-\EOF &&
+	From: Foo Bar <author@example.com>
+	From: Foo Bar <author@example.com>
+	From: A U Thor <author@example.com>
+	EOF
+	sed -ne "/^From:/p; /^[[:space:]]$/d" patch >patch.head &&
+	test_cmp expect patch.head
+'
+
 test_expect_success '--from omits redundant in-body header' '
 	git format-patch -1 --stdout --from="A U Thor <author@example.com>" >patch &&
 	cat >expect <<-\EOF &&
-- 
2.53.0
Previous: Junio C HamanoNext: Patrick Steinhardt
Message 3 of 17 in “format-patch: fix from header in cover letter”
  1. format-patch: fix from header in cover letterMirko Faina, Feb 14, 2026
  2. Junio C HamanoFeb 16, 2026
  3. format-patch: fix From header in cover letterMirko Faina, Feb 16, 2026
  4. Patrick SteinhardtFeb 17, 2026
  5. Jeff KingFeb 17, 2026
  6. D. Ben KnobleFeb 17, 2026
  7. Jeff KingFeb 19, 2026
  8. Mirko FainaFeb 19, 2026
  9. D. Ben KnobleFeb 19, 2026
  10. Junio C HamanoFeb 17, 2026
  11. Jeff KingFeb 19, 2026
  12. Junio C HamanoFeb 20, 2026
  13. format-patch: fix From header in cover letterMroik, Feb 17, 2026
  14. Mirko FainaFeb 17, 2026
  15. Junio C HamanoFeb 17, 2026
  16. Junio C HamanoFeb 17, 2026
  17. format-patch: fix From header in cover letterMirko Faina, Feb 17, 2026

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.