[PATCH v4 1/4] pretty.c: add %(count) and %(total) placeholders
- From
Mirko Faina <mroik@delayed.space>
- Date
- Feb 27, 2026, 13:18 UTC
- Message-ID
- <cfed3bddf66ed2fab1f4da896759de1ba086578f.1772196510.git.mroik@delayed.space>
- In-Reply-To
- <cover.1772196510.git.mroik@delayed.space>
In many commands we can customize the output through the "--format" or the "--pretty" options. This patch adds two new placeholders used mainly when there's a range of commits that we want to show.
Currently these two placeholders are not usable as they're coupled with the rev_info->nr and rev_info->total fields, fields that are used only by the format-patch numbered email subjects.
Teach repo_format_commit_message() the %(count) and %(total) placeholders.
Signed-off-by: Mirko Faina <mroik@delayed.space> --- pretty.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/pretty.c b/pretty.c index e0646bbc5d..e29bb8b877 100644 --- a/pretty.c +++ b/pretty.c @@ -1549,6 +1549,21 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */ if (!commit->object.parsed) parse_object(the_repository, &commit->object.oid); + if (starts_with(placeholder, "(count)")) { + if (!c->pretty_ctx->rev) + die(_("this format specifier can't be used with this command")); + strbuf_addf(sb, "%0*d", decimal_width(c->pretty_ctx->rev->total), + c->pretty_ctx->rev->nr); + return 7; + } + + if (starts_with(placeholder, "(total)")) { + if (!c->pretty_ctx->rev) + die(_("this format specifier can't be used with this command")); + strbuf_addf(sb, "%d", c->pretty_ctx->rev->total); + return 7; + } + switch (placeholder[0]) { case 'H': /* commit hash */ strbuf_addstr(sb, diff_get_color(c->auto_color, DIFF_COMMIT));
-- 2.53.0.4.gf9ee8e2400