path: root/fast-import.c
diff options
authorShawn O. Pearce <>2007-08-03 03:37:21 (GMT)
committerShawn O. Pearce <>2007-08-19 07:38:34 (GMT)
commitea08a6fd194991f9d800e4cac5ae55fdb02dd235 (patch)
treebc482394c683c355957807fbb40074a7bb1a2b12 /fast-import.c
parentc905e09006838c209be842dbe740943b2ad2d25b (diff)
Actually allow TAG_FIXUP branches in fast-import
Michael Haggerty <> noticed while debugging a Git backend for cvs2svn that fast-import was barfing when he tried to use "TAG_FIXUP" as a branch name for temporary work needed to cleanup the tree prior to creating an annotated tag object. The reason we were rejecting the branch name was check_ref_format() returns -2 when there are less than 2 '/' characters in the input name. TAG_FIXUP has 0 '/' characters, but is technically just as valid of a ref as HEAD and MERGE_HEAD, so we really should permit it (and any other similar looking name) during import. New test cases have been added to make sure we still detect very wrong branch names (e.g. containing [ or starting with .) and yet still permit reasonable names (e.g. TAG_FIXUP). Signed-off-by: Shawn O. Pearce <>
Diffstat (limited to 'fast-import.c')
1 files changed, 5 insertions, 1 deletions
diff --git a/fast-import.c b/fast-import.c
index b28f90d..7e136a6 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -524,8 +524,12 @@ static struct branch *new_branch(const char *name)
if (b)
die("Invalid attempt to create duplicate branch: %s", name);
- if (check_ref_format(name))
+ switch (check_ref_format(name)) {
+ case 0: break; /* its valid */
+ case -2: break; /* valid, but too few '/', allow anyway */
+ default:
die("Branch name doesn't conform to GIT standards: %s", name);
+ }
b = pool_calloc(1, sizeof(struct branch));
b->name = pool_strdup(name);