Accept tags in HEAD or MERGE_HEAD
HEAD and MERGE_HEAD (among other branch tips) should never hold a tag. That can only be caused by broken tools and is cumbersome to fix by an end user with: $ git update-ref HEAD $(git rev-parse HEAD^{commit}) which may look like a magic to a new person. Be easy, warn users (so broken tools can be fixed if they bother to report) and move on. Be robust, if the given SHA-1 cannot be resolved to a commit object, die (therefore return value is always valid). Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
894642f68d
commit
baf18fc261
@ -986,10 +986,12 @@ static void prepare_show_merge(struct rev_info *revs)
|
||||
const char **prune = NULL;
|
||||
int i, prune_num = 1; /* counting terminating NULL */
|
||||
|
||||
if (get_sha1("HEAD", sha1) || !(head = lookup_commit(sha1)))
|
||||
if (get_sha1("HEAD", sha1))
|
||||
die("--merge without HEAD?");
|
||||
if (get_sha1("MERGE_HEAD", sha1) || !(other = lookup_commit(sha1)))
|
||||
head = lookup_commit_or_die(sha1, "HEAD");
|
||||
if (get_sha1("MERGE_HEAD", sha1))
|
||||
die("--merge without MERGE_HEAD?");
|
||||
other = lookup_commit_or_die(sha1, "MERGE_HEAD");
|
||||
add_pending_object(revs, &head->object, "HEAD");
|
||||
add_pending_object(revs, &other->object, "MERGE_HEAD");
|
||||
bases = get_merge_bases(head, other, 1);
|
||||
|
Reference in New Issue
Block a user