git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Do not create bogus branch from flag to git branch

From
AWAmos Waterland <apw@rossby.metr.ou.edu>
Date
Sep 8, 2005, 02:13 UTC
Message-ID
<20050908021326.GA18776@rossby.metr.ou.edu>

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>
---
 git-branch-script |   16 ++++++++++++++++
 t/t3200-branch.sh |   27 +++++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 0 deletions(-)
 create mode 100755 t/t3200-branch.sh
09dc220283888eabd4dbb3ca647d13de6d6c876e
diff --git a/git-branch-script b/git-branch-script
--- a/git-branch-script
+++ b/git-branch-script
@@ -2,6 +2,16 @@
 
 . git-sh-setup-script || 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
--- /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-cache --add A &&
+     git commit -m "Initial commit."'
+
+test_expect_failure \
+    'git branch --help should return error code' \
+    'git branch --help'
+
+test_expect_failure \
+    'git branch --help should not have created a bogus branch' \
+    'test -f .git/refs/heads/--help'
+
+test_done
Message 1 of 1 in “Do not create bogus branch from flag to git branch”
  1. Do not create bogus branch from flag to git branchAmos Waterland, Sep 8, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.