diff options
author | Amos Waterland <apw@rossby.metr.ou.edu> | 2005-09-07 21:13:26 -0500 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-09-07 22:08:30 -0700 |
commit | a3b427b9fa1fdfd6d0c119d1f9db075ff92ffdf7 (patch) | |
tree | e0027c4eb430e15a82af1646ee44c5f2fe851314 | |
parent | f0ebff0dfebc667e5edf6f67d190fd960513ab66 (diff) | |
download | git-a3b427b9fa1fdfd6d0c119d1f9db075ff92ffdf7.tar.gz |
[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>
-rwxr-xr-x | git-branch.sh | 16 | ||||
-rwxr-xr-x | t/t3200-branch.sh | 27 |
2 files changed, 43 insertions, 0 deletions
diff --git a/git-branch.sh b/git-branch.sh index 145a7b783a..81b9e6cce1 100755 --- a/git-branch.sh +++ b/git-branch.sh @@ -2,6 +2,16 @@ . 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 0) headref=$(readlink "$GIT_DIR/HEAD" | sed -e 's|^refs/heads/||') @@ -25,6 +35,12 @@ case "$#" in head="$2^0" ;; esac branchname="$1" + +case "$branchname" in +-*) + usage;; +esac + rev=$(git-rev-parse --verify "$head") || exit [ -e "$GIT_DIR/refs/heads/$branchname" ] && die "$branchname already exists" diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh new file mode 100755 index 0000000000..6e36398444 --- /dev/null +++ b/t/t3200-branch.sh @@ -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 |