merge: a random object may not necssarily be a commit
authorJunio C Hamano <gitster@pobox.com>
Tue, 19 Mar 2013 16:55:34 +0000 (09:55 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 19 Mar 2013 17:59:07 +0000 (10:59 -0700)
The user could have said "git merge $(git rev-parse v1.0.0)"; we
shouldn't mark it as "Merge commit '15999998fb...'" as the merge
name, even though such an invocation might be crazy.

We could even read the "tag " header from the tag object and replace
the object name the user gave us, but let's not lose the information
by doing so, at least not yet.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/merge.c
index 0ec8f0d449e505a52166b560f43f30d8c30cfbaf..990e90c9a4619c12fd386091d95c3acfcb9efa73 100644 (file)
@@ -516,6 +516,19 @@ static void merge_name(const char *remote, struct strbuf *msg)
                strbuf_release(&line);
                goto cleanup;
        }
+
+       if (remote_head->util) {
+               struct merge_remote_desc *desc;
+               desc = merge_remote_util(remote_head);
+               if (desc && desc->obj && desc->obj->type == OBJ_TAG) {
+                       strbuf_addf(msg, "%s\t\t%s '%s'\n",
+                                   sha1_to_hex(desc->obj->sha1),
+                                   typename(desc->obj->type),
+                                   remote);
+                       goto cleanup;
+               }
+       }
+
        strbuf_addf(msg, "%s\t\tcommit '%s'\n",
                sha1_to_hex(remote_head->object.sha1), remote);
 cleanup: