[PATCH] Do not create bogus branch from flag to git branch
If you run `git branch --help', you will unexpectedly have created a new branch named "--help". This simple patch adds logic and a usage statement to catch this and similar problems, and adds a testcase for it. Signed-off-by: Amos Waterland <apw@rossby.metr.ou.edu> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
f0ebff0dfe
commit
a3b427b9fa
@ -2,6 +2,16 @@
|
|||||||
|
|
||||||
. git-sh-setup || die "Not a git archive"
|
. git-sh-setup || die "Not a git archive"
|
||||||
|
|
||||||
|
usage () {
|
||||||
|
echo >&2 "usage: $(basename $0)"' [<branchname> [start-point]]
|
||||||
|
|
||||||
|
If no arguments, show available branches and mark current branch with a star.
|
||||||
|
If one argument, create a new branch <branchname> based off of current HEAD.
|
||||||
|
If two arguments, create a new branch <branchname> based off of <start-point>.
|
||||||
|
'
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
case "$#" in
|
case "$#" in
|
||||||
0)
|
0)
|
||||||
headref=$(readlink "$GIT_DIR/HEAD" | sed -e 's|^refs/heads/||')
|
headref=$(readlink "$GIT_DIR/HEAD" | sed -e 's|^refs/heads/||')
|
||||||
@ -25,6 +35,12 @@ case "$#" in
|
|||||||
head="$2^0" ;;
|
head="$2^0" ;;
|
||||||
esac
|
esac
|
||||||
branchname="$1"
|
branchname="$1"
|
||||||
|
|
||||||
|
case "$branchname" in
|
||||||
|
-*)
|
||||||
|
usage;;
|
||||||
|
esac
|
||||||
|
|
||||||
rev=$(git-rev-parse --verify "$head") || exit
|
rev=$(git-rev-parse --verify "$head") || exit
|
||||||
|
|
||||||
[ -e "$GIT_DIR/refs/heads/$branchname" ] && die "$branchname already exists"
|
[ -e "$GIT_DIR/refs/heads/$branchname" ] && die "$branchname already exists"
|
||||||
|
27
t/t3200-branch.sh
Executable file
27
t/t3200-branch.sh
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005 Amos Waterland
|
||||||
|
#
|
||||||
|
|
||||||
|
test_description='git branch --foo should not create bogus branch
|
||||||
|
|
||||||
|
This test runs git branch --help and checks that the argument is properly
|
||||||
|
handled. Specifically, that a bogus branch is not created.
|
||||||
|
'
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'prepare an trivial repository' \
|
||||||
|
'echo Hello > A &&
|
||||||
|
../../git-update-index --add A &&
|
||||||
|
../../git-commit.sh -m "Initial commit."'
|
||||||
|
|
||||||
|
test_expect_failure \
|
||||||
|
'git branch --help should return error code' \
|
||||||
|
'../../git-branch.sh --help'
|
||||||
|
|
||||||
|
test_expect_failure \
|
||||||
|
'git branch --help should not have created a bogus branch' \
|
||||||
|
'test -f .git/refs/heads/--help'
|
||||||
|
|
||||||
|
test_done
|
Loading…
x
Reference in New Issue
Block a user