mirror of
https://github.com/git/git.git
synced 2024-11-28 12:34:08 +08:00
Disallow '\' in ref names
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f01f1099f4
commit
a4c2e69936
@ -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
|
||||
|
3
refs.c
3
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user