summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Pfender <jpfender@elegosoft.com>2011-04-21 10:38:37 +0200
committerJakob Pfender <jpfender@elegosoft.com>2011-04-21 10:38:37 +0200
commitdf30eac1eba7b11a04d35e4e5a3f31c9ae58aa0a (patch)
tree7f3e28038e0534569f986e813114e1391a31644b
parentfee4c4255004c1f142e39d6884a4804eb38e3183 (diff)
downloadlibgit2-df30eac1eba7b11a04d35e4e5a3f31c9ae58aa0a.tar.gz
refs: Allow MERGE_HEAD in normalize_name()
Do not return with EINVALIDREFNAME when trying to normalize MERGE_HEAD's name.
-rw-r--r--src/refs.c5
-rw-r--r--src/refs.h1
2 files changed, 4 insertions, 2 deletions
diff --git a/src/refs.c b/src/refs.c
index 00b9ff6b2..17ec2915f 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1692,8 +1692,9 @@ static int normalize_name(char *buffer_out, const char *name, int is_oid_ref)
}
/* Object id refname have to contain at least one slash, except
- * for HEAD in a detached state */
- if (is_oid_ref && !contains_a_slash && strcmp(name, GIT_HEAD_FILE))
+ * for HEAD in a detached state or MERGE_HEAD if we're in the
+ * middle of a merge */
+ if (is_oid_ref && !contains_a_slash && (strcmp(name, GIT_HEAD_FILE) && strcmp(name, GIT_MERGE_HEAD_FILE)))
return GIT_EINVALIDREFNAME;
/* A refname can not end with ".lock" */
diff --git a/src/refs.h b/src/refs.h
index bebb1b97d..b8f3e2f6d 100644
--- a/src/refs.h
+++ b/src/refs.h
@@ -17,6 +17,7 @@
#define MAX_GITDIR_TREE_STRUCTURE_PATH_LENGTH 100
#define GIT_HEAD_FILE "HEAD"
+#define GIT_MERGE_HEAD_FILE "MERGE_HEAD"
#define GIT_REFS_HEADS_MASTER_FILE GIT_REFS_HEADS_DIR "master"
struct git_reference {