Skip to content

Commit

Permalink
shortlog: don't warn on empty author
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Jan 19, 2016
1 parent 9b21a34 commit d6b16ce
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 24 deletions.
8 changes: 0 additions & 8 deletions builtin/shortlog.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
}
Expand Down
16 changes: 0 additions & 16 deletions t/t4201-shortlog.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 &&
Expand Down

0 comments on commit d6b16ce

Please sign in to comment.