Show 6 quoted lines
> After thinking on this, I'm in favor of removing this warning entirely.
> My reasons are given in the commit message below, which can apply on top
> of the series. It could also be squashed in to 2/6, but given that it
> is removing the test added by cd4f09e (shortlog: ignore commits with
> missing authors, 2013-09-18), I think it's worth recording as a separate
> commit.
Show 86 quoted lines
>
> -- >8 --
> Subject: [PATCH] shortlog: don't warn on empty author
>
> 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>
> ---
> builtin/shortlog.c | 8 --------
> t/t4201-shortlog.sh | 16 ----------------
> 2 files changed, 24 deletions(-)
>
> diff --git a/builtin/shortlog.c b/builtin/shortlog.c
> index adbf1fd..e32be39 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 82b2314..f5e6367 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 &&