Skip to content

Commit

Permalink
log --show-signature: reword the common two-head merge case
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano committed Jan 5, 2012
1 parent 824958e commit d041ffa
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions log-tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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);
Expand Down

0 comments on commit d041ffa

Please sign in to comment.