aboutsummaryrefslogtreecommitdiff
path: root/builtin/shortlog.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2016-01-18 15:02:52 -0500
committerJunio C Hamano <gitster@pobox.com>2016-01-19 09:55:01 -0800
commit4e1d1a2eea25878a2128e376bff8b4a1b2216b15 (patch)
tree476c4fe8c2ff49d26e57f5190294fd2c2a8cc2ed /builtin/shortlog.c
parent2db6b83d189bb82d1d45805fa6c85a9c8b507920 (diff)
downloadgit-4e1d1a2eea25878a2128e376bff8b4a1b2216b15.tar.gz
git-4e1d1a2eea25878a2128e376bff8b4a1b2216b15.tar.xz
shortlog: optimize "--summary" mode
If the user asked us only to show counts for each author, rather than the individual summary lines, then there is no point in us generating the summaries only to throw them away. With this patch, I measured the following speedup for "git shortlog -ns HEAD" on linux.git (best-of-five): [before] real 0m5.644s user 0m5.472s sys 0m0.176s [after] real 0m5.257s user 0m5.104s sys 0m0.156s That's only ~7%, but it's so easy to do, there's no good reason not to. We don't have to touch any downstream code, since we already fill in the magic string "<none>" to handle commits without a message. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/shortlog.c')
-rw-r--r--builtin/shortlog.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index 1261ec4dd..973b50d41 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -132,10 +132,12 @@ void shortlog_add_commit(struct shortlog *log, struct commit *commit)
goto out;
}
- if (log->user_format)
- pretty_print_commit(&ctx, commit, &oneline);
- else
- format_commit_message(commit, "%s", &oneline, &ctx);
+ if (!log->summary) {
+ if (log->user_format)
+ pretty_print_commit(&ctx, commit, &oneline);
+ else
+ format_commit_message(commit, "%s", &oneline, &ctx);
+ }
insert_one_record(log, author.buf, oneline.len ? oneline.buf : "<none>");