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

[PATCH] prevent checkout from creating branches that start with a dash

From
Bart Trojanowski <bart@jukie.net>
Date
Jul 2, 2008, 15:01 UTC
Message-ID
<20080702150128.GH26300@jukie.net>

It was previously possible to create a -f branch with git-checkout, which could not be used or deleted.

        $ git checkout -b -f master
        Switched to a new branch "-f"
Signed-off-by: Bart Trojanowski <bart@jukie.net>
---
 branch.c           |   11 +++++++++++
 branch.h           |    5 +++++
 builtin-checkout.c |    4 ++++
 3 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/branch.c b/branch.c
index 56e9492..c25e362 100644
--- a/branch.c
+++ b/branch.c
@@ -170,3 +170,14 @@ void remove_branch_state(void)
 	unlink(git_path("MERGE_MSG"));
 	unlink(git_path("SQUASH_MSG"));
 }
+
+int validate_branch_name(const char *branch_name)
+{
+	if (!*branch_name)
+		return -1;
+
+	if (*branch_name == '-')
+		return -1;
+
+	return 0;
+}
diff --git a/branch.h b/branch.h
index 9f0c2a2..13999ba 100644
--- a/branch.h
+++ b/branch.h
@@ -21,4 +21,9 @@ void create_branch(const char *head, const char *name, const char *start_name,
  */
 void remove_branch_state(void);
 
+/*
+ * Check if the branch name given is well formed.  Returns 0 on success.
+ */
+int validate_branch_name(const char *branch_name);
+
 #endif
diff --git a/builtin-checkout.c b/builtin-checkout.c
index 93ea69b..f425646 100644
--- a/builtin-checkout.c
+++ b/builtin-checkout.c
@@ -553,6 +553,10 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
 	if (opts.force && opts.merge)
 		die("git checkout: -f and -m are incompatible");
 
+	if (opts.new_branch && validate_branch_name(opts.new_branch))
+		die("git checkout: '%s' does not look like a valid branch name",
+				opts.new_branch);
+
 	if (argc) {
 		const char **pathspec = get_pathspec(prefix, argv);
 
-- 
1.5.6.1.109.ga974cd.dirty
Next: Brian Gernhardt
Message 1 of 4 in “prevent checkout from creating branches that start with a dash”
  1. prevent checkout from creating branches that start with a dashBart Trojanowski, Jul 2, 2008
  2. Brian GernhardtJul 2, 2008
  3. Johannes SixtJul 2, 2008
  4. Bart TrojanowskiJul 2, 2008

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.