From: Johannes Schindelin Date: Thu, 15 Dec 2005 11:46:54 GMT Subject: [PATCH] We do not like "HEAD" as a new branch name Message-ID: This makes git-check-ref-format fail for "HEAD". Since the check is only executed when creating refs, the existing symbolic ref is safe. Signed-off-by: Johannes Schindelin --- This patch was triggered by Alex' mail. Even if it should be a rare case, it could catch some bad errors: Just try to run git checkout -b HEAD and imagine what a regular git user makes of the error message... refs.c | 5 +++++ t/t3300-funny-names.sh | 2 ++ 2 files changed, 7 insertions(+), 0 deletions(-) 04d60f0bf743f91d03e03acebf123db527cb7507 diff --git a/refs.c b/refs.c index bda45f7..293bfe7 100644 --- a/refs.c +++ b/refs.c @@ -332,6 +332,11 @@ int check_ref_format(const char *ref) if (ch == '.' || bad_ref_char(ch)) return -1; + /* do not allow "HEAD" as ref name */ + if (ch == 'H' && (!strcmp(cp, "EAD") || + !strncmp(cp, "EAD/", 4))) + return -1; + /* scan the rest of the path component */ while ((ch = *cp++) != 0) { if (bad_ref_char(ch)) diff --git a/t/t3300-funny-names.sh b/t/t3300-funny-names.sh index 897c378..8ebd896 100755 --- a/t/t3300-funny-names.sh +++ b/t/t3300-funny-names.sh @@ -139,4 +139,6 @@ test_expect_success 'git-apply non-git d git-apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current && diff -u expected current' +test_expect_failure 'HEAD is special' 'git checkout -b HEAD' + test_done -- 0.99.9.GIT