summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2016-01-18 18:04:35 -0500
committerJunio C Hamano <gitster@pobox.com>2016-01-19 09:55:06 -0800
commitd6b16ce9147e787cce3551fc79d52b3e30c3ad3a (patch)
tree9340bfacc8d433954c52bbf4350ece96322fca60
parent9b21a34a968080873519a927afd9c2570f464785 (diff)
downloadgit-jk/shortlog.tar.gz
shortlog: don't warn on empty authorjk/shortlog
Git tries to avoid creating a commit with an empty author name or email. However, commits created by older, less strict versions of git may still be in the history. There's not much point in issuing a warning to stderr for an empty author. The user can't do anything about it now, and we are better off to simply include it in the shortlog output as an empty name/email, and let the caller process it however they see fit. Older versions of shortlog differentiated between "author header not present" (which complained) and "author name/email are blank" (which included the empty ident in the output). But since switching to format_commit_message, we complain to stderr about either case (linux.git has a blank author deep in its history which triggers this). We could try to restore the older behavior (complaining only about the missing header), but in retrospect, there's not much point in differentiating these cases. A missing author header is bogus, but as for the "blank" case, the only useful behavior is to add it to the "empty name" collection. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/shortlog.c8
-rwxr-xr-xt/t4201-shortlog.sh16
2 files changed, 0 insertions, 24 deletions
diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index adbf1fd991..e32be3993c 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -149,13 +149,6 @@ void shortlog_add_commit(struct shortlog *log, struct commit *commit)
ctx.output_encoding = get_log_output_encoding();
format_commit_message(commit, "%an <%ae>", &author, &ctx);
- /* we can detect a total failure only by seeing " <>" in the output */
- if (author.len <= 3) {
- warning(_("Missing author: %s"),
- oid_to_hex(&commit->object.oid));
- goto out;
- }
-
if (!log->summary) {
if (log->user_format)
pretty_print_commit(&ctx, commit, &oneline);
@@ -165,7 +158,6 @@ void shortlog_add_commit(struct shortlog *log, struct commit *commit)
insert_one_record(log, author.buf, oneline.len ? oneline.buf : "<none>");
-out:
strbuf_release(&author);
strbuf_release(&oneline);
}
diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh
index 82b2314514..f5e63670fa 100755
--- a/t/t4201-shortlog.sh
+++ b/t/t4201-shortlog.sh
@@ -178,22 +178,6 @@ test_expect_success !MINGW 'shortlog encoding' '
git shortlog HEAD~2.. > out &&
test_cmp expect out'
-test_expect_success 'shortlog ignores commits with missing authors' '
- git commit --allow-empty -m normal &&
- git commit --allow-empty -m soon-to-be-broken &&
- git cat-file commit HEAD >commit.tmp &&
- sed "/^author/d" commit.tmp >broken.tmp &&
- commit=$(git hash-object -w -t commit --stdin <broken.tmp) &&
- git update-ref HEAD $commit &&
- cat >expect <<-\EOF &&
- A U Thor (1):
- normal
-
- EOF
- git shortlog HEAD~2.. >actual &&
- test_cmp expect actual
-'
-
test_expect_success 'shortlog with revision pseudo options' '
git shortlog --all &&
git shortlog --branches &&