diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2011-09-17 21:57:45 +1000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-09-18 14:11:40 -0700 |
commit | baf18fc261ca475343fe3cb9cd2c0dded4bc1bb7 (patch) | |
tree | 666474a67f25d9906b2eace5692d1613beab21a6 /revision.c | |
parent | 894642f68d3160db9116ca350da83c4a78cff8f2 (diff) | |
download | git-baf18fc261ca475343fe3cb9cd2c0dded4bc1bb7.tar.gz git-baf18fc261ca475343fe3cb9cd2c0dded4bc1bb7.tar.xz |
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>
Diffstat (limited to 'revision.c')
-rw-r--r-- | revision.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/revision.c b/revision.c index c46cfaa3e..5e057a0ae 100644 --- a/revision.c +++ b/revision.c @@ -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); |