зеркало из https://github.com/microsoft/git.git
Merge branch 'rr/forbid-bs-in-ref'
* rr/forbid-bs-in-ref: Disallow '\' in ref names
This commit is contained in:
Коммит
e05aae684d
|
@ -42,6 +42,8 @@ imposes the following rules on how references are named:
|
||||||
|
|
||||||
. They cannot contain a sequence `@{`.
|
. They cannot contain a sequence `@{`.
|
||||||
|
|
||||||
|
- They cannot contain a `\\`.
|
||||||
|
|
||||||
These rules make it easy for shell script based tools to parse
|
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
|
reference names, pathname expansion by the shell when a reference name is used
|
||||||
unquoted (by mistake), and also avoids ambiguities in certain
|
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 has ASCII control character, "~", "^", ":" or SP, anywhere, or
|
||||||
* - it ends with a "/".
|
* - it ends with a "/".
|
||||||
* - it ends with ".lock"
|
* - it ends with ".lock"
|
||||||
|
* - it contains a "\" (backslash)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline int bad_ref_char(int ch)
|
static inline int bad_ref_char(int ch)
|
||||||
{
|
{
|
||||||
if (((unsigned) ch) <= ' ' ||
|
if (((unsigned) ch) <= ' ' ||
|
||||||
ch == '~' || ch == '^' || ch == ':')
|
ch == '~' || ch == '^' || ch == ':' || ch == '\\')
|
||||||
return 1;
|
return 1;
|
||||||
/* 2.13 Pattern Matching Notation */
|
/* 2.13 Pattern Matching Notation */
|
||||||
if (ch == '?' || ch == '[') /* Unsupported */
|
if (ch == '?' || ch == '[') /* Unsupported */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче