summaryrefslogtreecommitdiff
path: root/commit.h
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2011-09-17 21:57:45 +1000
committerJunio C Hamano <gitster@pobox.com>2011-09-18 14:11:40 -0700
commitbaf18fc261ca475343fe3cb9cd2c0dded4bc1bb7 (patch)
tree666474a67f25d9906b2eace5692d1613beab21a6 /commit.h
parent894642f68d3160db9116ca350da83c4a78cff8f2 (diff)
downloadgit-baf18fc261ca475343fe3cb9cd2c0dded4bc1bb7.tar.gz
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 'commit.h')
-rw-r--r--commit.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/commit.h b/commit.h
index a2d571b974..190c1d6883 100644
--- a/commit.h
+++ b/commit.h
@@ -38,6 +38,13 @@ struct commit *lookup_commit_reference_gently(const unsigned char *sha1,
int quiet);
struct commit *lookup_commit_reference_by_name(const char *name);
+/*
+ * Look up object named by "sha1", dereference tag as necessary,
+ * get a commit and return it. If "sha1" does not dereference to
+ * a commit, use ref_name to report an error and die.
+ */
+struct commit *lookup_commit_or_die(const unsigned char *sha1, const char *ref_name);
+
int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long size);
int parse_commit(struct commit *item);