From: Mirko Faina <mroik@delayed•space>
To: git@vger•kernel.org
Cc: Mirko Faina <mroik@delayed•space>,
Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail•com>
Subject: [PATCH v3 7/8] format-patch: add preset for --commit-list-format
Date: Mon, 23 Mar 2026 17:57:34 +0100 [thread overview]
Message-ID: <bdd8f1fb579af60b2c018f463e91c90859bb2daf.1774284699.git.mroik@delayed.space> (raw)
In-Reply-To: <cover.1774284699.git.mroik@delayed.space>
"git format-patch --commit-list-format" enables the user to make their
own format for the commit list in the cover letter. It would be nice to
have a ready to use format to replace shortlog.
Teach make_cover_letter() the "modern" format preset.
This new format is the same as: "log:[%(count)/%(total)] %s".
Signed-off-by: Mirko Faina <mroik@delayed•space>
---
Documentation/config/format.adoc | 2 +-
Documentation/git-format-patch.adoc | 4 ++--
builtin/log.c | 3 +++
t/t4014-format-patch.sh | 20 +++++++++++++++-----
4 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/Documentation/config/format.adoc b/Documentation/config/format.adoc
index ea5ec5df7a..ef1ed1d250 100644
--- a/Documentation/config/format.adoc
+++ b/Documentation/config/format.adoc
@@ -104,7 +104,7 @@ format.coverLetter::
format.commitListFormat::
When the `--cover-letter-format` option is not given, `format-patch`
uses the value of this variable to decide how to format the title of
- each commit. Default to `shortlog`.
+ each commit. Defaults to `shortlog`.
format.outputDirectory::
Set a custom directory to store the resulting files instead of the
diff --git a/Documentation/git-format-patch.adoc b/Documentation/git-format-patch.adoc
index 45ca72e670..55cc680685 100644
--- a/Documentation/git-format-patch.adoc
+++ b/Documentation/git-format-patch.adoc
@@ -325,8 +325,8 @@ feeding the result to `git send-email`.
--commit-list-format=<format-spec>::
Specify the format in which to generate the commit list of the patch
- series. The accepted values for format-spec are "shortlog" or a format
- string prefixed with `log:`.
+ series. The accepted values for format-spec are `shortlog`, `modern` or a
+ format string prefixed with `log:`.
e.g. `log: %s (%an)`
If not given, defaults to the `format.commitListFormat` configuration
variable.
diff --git a/builtin/log.c b/builtin/log.c
index d1765ce4ad..c6cf04350a 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1445,6 +1445,9 @@ static void make_cover_letter(struct rev_info *rev, int use_separate_file,
generate_commit_list_cover(rev->diffopt.file, format, list, nr);
else if (!strcmp(format, "shortlog"))
generate_shortlog_cover_letter(&log, rev, list, nr);
+ else if (!strcmp(format, "modern"))
+ generate_commit_list_cover(rev->diffopt.file, "[%(count)/%(total)] %s",
+ list, nr);
else
die(_("'%s' is not a valid format string"), format);
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index ca37f40a6a..7571cc582b 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -392,18 +392,17 @@ test_expect_success 'cover letter with subject, author and count' '
test_grep "^\[1/1\] This is a subject (A U Thor)$" patches/0000-cover-letter.patch
'
-test_expect_success 'cover letter with author and count' '
+test_expect_success 'cover letter modern format' '
test_when_finished "git reset --hard HEAD~1" &&
test_when_finished "rm -rf patches test_file" &&
touch test_file &&
git add test_file &&
git commit -m "This is a subject" &&
- git format-patch --commit-list-format="log:[%(count)/%(total)] %an" \
- -o patches HEAD~1 &&
- test_grep "^\[1/1\] A U Thor$" patches/0000-cover-letter.patch
+ git format-patch --commit-list-format="modern" -o patches HEAD~1 &&
+ test_grep "^\[1/1\] This is a subject$" patches/0000-cover-letter.patch
'
-test_expect_success 'cover letter shortlog' '
+test_expect_success 'cover letter shortlog format' '
test_when_finished "git reset --hard HEAD~1" &&
test_when_finished "rm -rf expect patches result test_file" &&
cat >expect <<-"EOF" &&
@@ -451,6 +450,17 @@ test_expect_success 'cover letter config with count and author' '
test_line_count = 2 result
'
+test_expect_success 'cover letter config commitlistformat set to modern' '
+ test_when_finished "rm -rf patches result" &&
+ test_when_finished "git config unset format.coverletter" &&
+ test_when_finished "git config unset format.commitlistformat" &&
+ git config set format.coverletter true &&
+ git config set format.commitlistformat modern &&
+ git format-patch -o patches HEAD~2 &&
+ grep -E "^[[[:digit:]]+/[[:digit:]]+] .*$" patches/0000-cover-letter.patch >result &&
+ test_line_count = 2 result
+'
+
test_expect_success 'cover letter config commitlistformat set to shortlog' '
test_when_finished "rm -rf patches result" &&
test_when_finished "git config unset format.coverletter" &&
--
2.53.0.1118.gaef5881109
next prev parent reply other threads:[~2026-03-23 16:58 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-14 23:20 [PATCH 0/7] improve "git format-patch --commit-list-format" Mirko Faina
2026-03-14 23:20 ` [PATCH 1/7] pretty.c: better die message %(count) and %(total) Mirko Faina
2026-03-14 23:20 ` [PATCH 2/7] format-patch: refactor generate_commit_list_cover Mirko Faina
2026-03-14 23:20 ` [PATCH 3/7] format-patch: rename --cover-letter-format option Mirko Faina
2026-03-14 23:20 ` [PATCH 4/7] format.commitListFormat: strip meaning from empty Mirko Faina
2026-03-14 23:20 ` [PATCH 5/7] format-patch: wrap generate_commit_list_cover() Mirko Faina
2026-03-17 15:32 ` Kristoffer Haugsbakk
2026-03-17 16:18 ` Mirko Faina
2026-03-14 23:20 ` [PATCH 6/7] format-patch: add preset for --commit-list-format Mirko Faina
2026-03-14 23:20 ` [PATCH 7/7] format-patch: --commit-list-format without prefix Mirko Faina
2026-03-17 15:29 ` Kristoffer Haugsbakk
2026-03-17 16:20 ` Mirko Faina
2026-03-19 22:38 ` [PATCH v2 0/8] improve "git format-patch --commit-list-format" Mirko Faina
2026-03-19 22:38 ` [PATCH v2 1/8] pretty.c: better die message %(count) and %(total) Mirko Faina
2026-03-19 22:38 ` [PATCH v2 2/8] format-patch: refactor generate_commit_list_cover Mirko Faina
2026-03-19 22:38 ` [PATCH v2 3/8] format-patch: rename --cover-letter-format option Mirko Faina
2026-03-19 22:38 ` [PATCH v2 4/8] docs/pretty-formats: add %(count) and %(total) Mirko Faina
2026-03-23 10:29 ` Kristoffer Haugsbakk
2026-03-23 14:00 ` Mirko Faina
2026-03-19 22:38 ` [PATCH v2 5/8] format.commitListFormat: strip meaning from empty Mirko Faina
2026-03-19 22:38 ` [PATCH v2 6/8] format-patch: wrap generate_commit_list_cover() Mirko Faina
2026-03-19 22:38 ` [PATCH v2 7/8] format-patch: add preset for --commit-list-format Mirko Faina
2026-03-19 22:38 ` [PATCH v2 8/8] format-patch: --commit-list-format without prefix Mirko Faina
2026-03-23 16:57 ` [PATCH v3 0/8] improve "git format-patch --commit-list-format" Mirko Faina
2026-03-23 16:57 ` [PATCH v3 1/8] pretty.c: better die message %(count) and %(total) Mirko Faina
2026-03-23 16:57 ` [PATCH v3 2/8] format-patch: refactor generate_commit_list_cover Mirko Faina
2026-03-23 16:57 ` [PATCH v3 3/8] format-patch: rename --cover-letter-format option Mirko Faina
2026-03-23 16:57 ` [PATCH v3 4/8] docs/pretty-formats: add %(count) and %(total) Mirko Faina
2026-03-23 16:57 ` [PATCH v3 5/8] format.commitListFormat: strip meaning from empty Mirko Faina
2026-03-23 16:57 ` [PATCH v3 6/8] format-patch: wrap generate_commit_list_cover() Mirko Faina
2026-03-23 16:57 ` Mirko Faina [this message]
2026-03-23 16:57 ` [PATCH v3 8/8] format-patch: --commit-list-format without prefix Mirko Faina
2026-03-23 20:10 ` [PATCH v3 0/8] improve "git format-patch --commit-list-format" Junio C Hamano
2026-03-24 16:19 ` Kristoffer Haugsbakk
2026-03-26 14:29 ` Phillip Wood
2026-03-26 16:37 ` Junio C Hamano
2026-03-27 1:13 ` Mirko Faina
2026-03-27 16:04 ` Junio C Hamano
2026-03-27 16:18 ` Mirko Faina
2026-03-27 16:47 ` Junio C Hamano
2026-03-26 16:34 ` D. Ben Knoble
2026-03-26 17:15 ` Mirko Faina
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bdd8f1fb579af60b2c018f463e91c90859bb2daf.1774284699.git.mroik@delayed.space \
--to=mroik@delayed$(echo .)space \
--cc=git@vger$(echo .)kernel.org \
--cc=kristofferhaugsbakk@fastmail$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox