Skip to content

Commit

Permalink
Disallow '\' in ref names
Browse files Browse the repository at this point in the history
This is asking for trouble since '\' is a directory separator in
Windows and thus may produce unpredictable results.

Signed-off-by: Robin Rosenberg <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
robinrosenberg authored and gitster committed May 9, 2009
1 parent f01f109 commit a4c2e69
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 1 deletion.
2 changes: 2 additions & 0 deletions Documentation/git-check-ref-format.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion refs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down

0 comments on commit a4c2e69

Please sign in to comment.