summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2018-01-19 09:20:59 +0000
committerPatrick Steinhardt <ps@pks.im>2018-01-19 09:34:01 +0000
commita9677e019c01cc9c06230c4e8ee2c04db72885c4 (patch)
treea6754d57466445d091ad6be9d6c2544e2b05111f
parent4893a9c01c8da084eb995178f80d0d453109056e (diff)
downloadlibgit2-a9677e019c01cc9c06230c4e8ee2c04db72885c4.tar.gz
branch: refuse creating branches named 'HEAD'
Since a625b092c (branch: correctly reject refs/heads/{-dash,HEAD}, 2017-11-14), which is included in v2.16.0, upstream git refuses to create branches which are named HEAD to avoid ambiguity with the symbolic HEAD reference. Adjust our own code to match that behaviour and reject creating branches names HEAD.
-rw-r--r--src/branch.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/branch.c b/src/branch.c
index 0697a77fb..42addc2ce 100644
--- a/src/branch.c
+++ b/src/branch.c
@@ -70,6 +70,12 @@ static int create_branch(
assert(branch_name && commit && ref_out);
assert(git_object_owner((const git_object *)commit) == repository);
+ if (!git__strcmp(branch_name, "HEAD")) {
+ giterr_set(GITERR_REFERENCE, "'HEAD' is not a valid branch name");
+ error = -1;
+ goto cleanup;
+ }
+
if (force && !bare && git_branch_lookup(&branch, repository, branch_name, GIT_BRANCH_LOCAL) == 0) {
error = git_branch_is_head(branch);
git_reference_free(branch);