From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Eric Sunshine <sunshine@sunshineco.com>
Subject: Re: [PATCH 3/6] shortlog: replace hand-parsing of author with pretty-printer
Date: Mon, 18 Jan 2016 18:04:35 -0500 [thread overview]
Message-ID: <20160118230435.GA16898@sigill.intra.peff.net> (raw)
In-Reply-To: <20160118201337.GA15943@sigill.intra.peff.net>
On Mon, Jan 18, 2016 at 03:13:37PM -0500, Jeff King wrote:
> On Mon, Jan 18, 2016 at 03:02:48PM -0500, Jeff King wrote:
>
> > + 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;
> > }
>
> One note on this. In the linux.git tree, this warning actually triggers,
> because there is a commit with a bogus empty author:
>
> $ git log -1 --format=raw af25e94d4dc | grep ^author
> author <> 1120285620 -0700
>
> Whereas in the original code, you really do get a line with a blank
> name.
>
> I think what the new code does is quite reasonable, but I'm not sure if:
>
> 1. People really want a syntactically valid empty name to be
> represented.
>
> and
>
> 2. Regardless of the output, if kernel folks will be annoyed by the
> warning whenever they run a full-repo shortlog.
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.
-- >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 &&
--
2.7.0.248.g5eafd77
next prev parent reply other threads:[~2016-01-18 23:04 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-15 17:06 [PATCH 0/6] shortlog fixes and optimizations Jeff King
2016-01-15 17:08 ` [PATCH 1/6] shortlog: match both "Author:" and "author" on stdin Jeff King
2016-01-15 23:19 ` Eric Sunshine
2016-01-18 19:27 ` Jeff King
2016-01-18 19:26 ` Jeff King
2016-01-18 19:55 ` Junio C Hamano
2016-01-18 20:01 ` [PATCH v2 0/6] shortlog fixes and optimizations Jeff King
2016-01-18 20:02 ` [PATCH 1/6] shortlog: match both "Author:" and "author" on stdin Jeff King
2016-01-18 20:02 ` [PATCH 2/6] shortlog: use strbufs to read from stdin Jeff King
2016-01-18 20:02 ` [PATCH 3/6] shortlog: replace hand-parsing of author with pretty-printer Jeff King
2016-01-18 20:13 ` Jeff King
2016-01-18 23:04 ` Jeff King [this message]
2016-01-19 3:47 ` Junio C Hamano
2016-01-18 20:02 ` [PATCH 4/6] shortlog: optimize "--summary" mode Jeff King
2016-01-18 20:02 ` [PATCH 5/6] shortlog: optimize out useless "<none>" normalization Jeff King
2016-01-18 20:02 ` [PATCH 6/6] shortlog: optimize out useless string list Jeff King
2016-01-15 17:08 ` [PATCH 2/6] shortlog: use strbufs to read from stdin Jeff King
2016-01-15 17:09 ` [PATCH 3/6] shortlog: replace hand-parsing of author with pretty-printer Jeff King
2016-01-15 17:09 ` [PATCH 4/6] shortlog: optimize "--summary" mode Jeff King
2016-01-15 17:10 ` [PATCH 5/6] shortlog: optimize out useless "<none>" normalization Jeff King
2016-01-15 17:10 ` [PATCH 6/6] shortlog: optimize out useless string list Jeff King
2016-01-15 22:11 ` [PATCH 0/6] shortlog fixes and optimizations Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160118230435.GA16898@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).