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 <Johannes.Schindelin@gmx.de> --- 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 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Thu Dec 15 22:47:59 2005
This archive was generated by hypermail 2.1.8 : 2005-12-15 22:48:05 EST