diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-01-04 16:23:12 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-01-05 13:02:27 -0800 |
commit | d041ffa55a69cb6cdc3b160dc181c7e59b3bd4bb (patch) | |
tree | ea6625d23c618e398d81f422fa04aad6d24c6c01 | |
parent | 824958e50b250e957998626a21763603ca30e832 (diff) | |
download | git-d041ffa55a69cb6cdc3b160dc181c7e59b3bd4bb.tar.gz |
log --show-signature: reword the common two-head merge casejc/show-sig
While identifying the commit merged to our history as "parent #2" is
technically correct, we will never say "parent #1" (as that is the tip of
our history before the merge is made), and we rarely would say "parent #3"
(which would mean the merge is an octopus), especially when responding to
a request to pull a signed tag.
Treat the most common case to merge a single commit specially, and just
say "merged tag '<tagname>'" instead.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | log-tree.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/log-tree.c b/log-tree.c index 61a12a7cb0..3cf569ce7e 100644 --- a/log-tree.c +++ b/log-tree.c @@ -456,6 +456,13 @@ static int which_parent(const unsigned char *sha1, const struct commit *commit) return -1; } +static int is_common_merge(const struct commit *commit) +{ + return (commit->parents + && commit->parents->next + && !commit->parents->next->next); +} + static void show_one_mergetag(struct rev_info *opt, struct commit_extra_header *extra, struct commit *commit) @@ -474,6 +481,11 @@ static void show_one_mergetag(struct rev_info *opt, strbuf_init(&verify_message, 256); if (parse_tag_buffer(tag, extra->value, extra->len)) strbuf_addstr(&verify_message, "malformed mergetag\n"); + else if (is_common_merge(commit) && + !hashcmp(tag->tagged->sha1, + commit->parents->next->item->object.sha1)) + strbuf_addf(&verify_message, + "merged tag '%s'\n", tag->tag); else if ((nth = which_parent(tag->tagged->sha1, commit)) < 0) strbuf_addf(&verify_message, "tag %s names a non-parent %s\n", tag->tag, tag->tagged->sha1); |