Do not fail on hierarchical branch names.
"git-checkout -b frotz/nitfol master" failed to create $GIT_DIR/refs/heads/frotz/nitfol but went ahead and updated $GIT_DIR/HEAD to point at it, resulting in a corrupt repository. Exit when we cannot create the new branch with an error status. While we are at it, there is no reason to forbid subdirectories in refs/heads, so make sure we handle that correctly. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
4ccafd7a02
commit
13d1cc3604
@ -102,4 +102,6 @@ rev=$(git-rev-parse --verify "$head") || exit
|
|||||||
git-check-ref-format "heads/$branchname" ||
|
git-check-ref-format "heads/$branchname" ||
|
||||||
die "we do not like '$branchname' as a branch name."
|
die "we do not like '$branchname' as a branch name."
|
||||||
|
|
||||||
|
leading=`expr "refs/heads/$branchname" : '\(.*\)/'` &&
|
||||||
|
mkdir -p "$GIT_DIR/$leading" &&
|
||||||
echo $rev > "$GIT_DIR/refs/heads/$branchname"
|
echo $rev > "$GIT_DIR/refs/heads/$branchname"
|
||||||
|
@ -126,7 +126,9 @@ fi
|
|||||||
#
|
#
|
||||||
if [ "$?" -eq 0 ]; then
|
if [ "$?" -eq 0 ]; then
|
||||||
if [ "$newbranch" ]; then
|
if [ "$newbranch" ]; then
|
||||||
echo $new > "$GIT_DIR/refs/heads/$newbranch"
|
leading=`expr "refs/heads/$newbranch" : '\(.*\)/'` &&
|
||||||
|
mkdir -p "$GIT_DIR/$leading" &&
|
||||||
|
echo $new >"$GIT_DIR/refs/heads/$newbranch" || exit
|
||||||
branch="$newbranch"
|
branch="$newbranch"
|
||||||
fi
|
fi
|
||||||
[ "$branch" ] &&
|
[ "$branch" ] &&
|
||||||
|
Loading…
Reference in New Issue
Block a user