summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-04-05 21:14:41 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-04-05 21:14:41 (GMT)
commite636241fdb23293eee0f61c355e528219bf737cf (patch)
treeb5fdf7ca5273d6f992e6aeb818ce28b0365982a6 /builtin
parentbfd70c53b38f03a4e788fb84518c09f67b7514c2 (diff)
parenta38d3d76b6d1c70b566633e1629aa3b0e856810e (diff)
downloadgit-e636241fdb23293eee0f61c355e528219bf737cf.zip
git-e636241fdb23293eee0f61c355e528219bf737cf.tar.gz
git-e636241fdb23293eee0f61c355e528219bf737cf.tar.bz2
Merge branch 'jc/merge-tag-object'
"git merge $(git rev-parse v1.8.2)" behaved quite differently from "git merge v1.8.2" as if v1.8.2 were written as v1.8.2^0 and did not pay much attention to the annotated tag payload. This makes the code notice the type of the tag object, in addition to the dwim_ref() based classification the current code uses (i.e. the name appears in refs/tags/) to decide when to special case merging of tags. * jc/merge-tag-object: t6200: test message for merging of an annotated tag t6200: use test_config/test_unconfig merge: a random object may not necssarily be a commit
Diffstat (limited to 'builtin')
-rw-r--r--builtin/merge.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/builtin/merge.c b/builtin/merge.c
index 7c8922c..0d94d89 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -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: