Skip to content

Commit

Permalink
shortlog: make trailer insertion a noop when appropriate
Browse files Browse the repository at this point in the history
When there are no trailers to insert, it is natural that
insert_records_from_trailers() should return without having done any
work.

But instead we guard this call unnecessarily by first checking whether
`log->groups` has the `SHORTLOG_GROUP_TRAILER` bit set.

Prepare to match a similar pattern in the future where a function which
inserts records of a certain type does no work when no specifiers
matching that type are given.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
ttaylorr authored and gitster committed Oct 24, 2022
1 parent 251554c commit 0b293df
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions builtin/shortlog.c
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,9 @@ static void insert_records_from_trailers(struct shortlog *log,
const char *commit_buffer, *body;
struct strbuf ident = STRBUF_INIT;

if (!log->trailers.nr)
return;

/*
* Using format_commit_message("%B") would be simpler here, but
* this saves us copying the message.
Expand Down Expand Up @@ -240,9 +243,7 @@ void shortlog_add_commit(struct shortlog *log, struct commit *commit)
strset_add(&dups, ident.buf))
insert_one_record(log, ident.buf, oneline_str);
}
if (log->groups & SHORTLOG_GROUP_TRAILER) {
insert_records_from_trailers(log, &dups, commit, &ctx, oneline_str);
}
insert_records_from_trailers(log, &dups, commit, &ctx, oneline_str);

strset_clear(&dups);
strbuf_release(&ident);
Expand Down

0 comments on commit 0b293df

Please sign in to comment.