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
12
commit.c
12
commit.c
@ -39,6 +39,18 @@ struct commit *lookup_commit_reference(const unsigned char *sha1)
|
||||
return lookup_commit_reference_gently(sha1, 0);
|
||||
}
|
||||
|
||||
struct commit *lookup_commit_or_die(const unsigned char *sha1, const char *ref_name)
|
||||
{
|
||||
struct commit *c = lookup_commit_reference(sha1);
|
||||
if (!c)
|
||||
die(_("could not parse %s"), ref_name);
|
||||
if (hashcmp(sha1, c->object.sha1)) {
|
||||
warning(_("%s %s is not a commit!"),
|
||||
ref_name, sha1_to_hex(sha1));
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
struct commit *lookup_commit(const unsigned char *sha1)
|
||||
{
|
||||
struct object *obj = lookup_object(sha1);
|
||||
|
Reference in New Issue
Block a user