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

[PATCH] Disallow '\' in ref names

From
Robin Rosenberg <robin.rosenberg@dewire.com>
Date
May 8, 2009, 05:32 UTC
Message-ID
<1241760757-26068-1-git-send-email-robin.rosenberg@dewire.com>

This is asking for trouble since '\' is a directory separator in Windows and thus may produce unpredictable results.

Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
---
 Documentation/git-check-ref-format.txt |    2 ++
 refs.c                                 |    3 ++-
 2 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/Documentation/git-check-ref-format.txt b/Documentation/git-check-ref-format.txt
index c1ce268..4884520 100644
--- a/Documentation/git-check-ref-format.txt
+++ b/Documentation/git-check-ref-format.txt
@@ -38,6 +38,8 @@ imposes the following rules on how references are named:
 
 . They cannot contain a sequence `@{`.
 
+- They cannot contain a `\\`
+
 These rules make it easy for shell script based tools to parse
 reference names, pathname expansion by the shell when a reference name is used
 unquoted (by mistake), and also avoids ambiguities in certain
diff --git a/refs.c b/refs.c
index e65a3b4..fc33bc6 100644
--- a/refs.c
+++ b/refs.c
@@ -682,12 +682,13 @@ int for_each_rawref(each_ref_fn fn, void *cb_data)
  * - it has ASCII control character, "~", "^", ":" or SP, anywhere, or
  * - it ends with a "/".
  * - it ends with ".lock"
+ * - it contains a "\" (backslash)
  */
 
 static inline int bad_ref_char(int ch)
 {
 	if (((unsigned) ch) <= ' ' ||
-	    ch == '~' || ch == '^' || ch == ':')
+	    ch == '~' || ch == '^' || ch == ':' || ch == '\\')
 		return 1;
 	/* 2.13 Pattern Matching Notation */
 	if (ch == '?' || ch == '[') /* Unsupported */
-- 
1.6.3.dirty
Next: Andreas Ericsson
Message 1 of 6 in “Disallow '\' in ref names”
  1. Disallow '\' in ref namesRobin Rosenberg, May 8, 2009
  2. Andreas EricssonMay 8, 2009
  3. Johannes SixtMay 8, 2009
  4. Andreas EricssonMay 8, 2009
  5. Johannes SixtMay 8, 2009
  6. Michael J GruberMay 8, 2009

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.