mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
Merge branch 'mh/check-ref-format-print-normalize'
* mh/check-ref-format-print-normalize: Forbid DEL characters in reference names check-ref-format --print: Normalize refnames that start with slashes
This commit is contained in:
commit
4b1108eec7
@ -12,8 +12,8 @@ static const char builtin_check_ref_format_usage[] =
|
|||||||
" or: git check-ref-format --branch <branchname-shorthand>";
|
" or: git check-ref-format --branch <branchname-shorthand>";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Replace each run of adjacent slashes in src with a single slash,
|
* Remove leading slashes and replace each run of adjacent slashes in
|
||||||
* and write the result to dst.
|
* src with a single slash, and write the result to dst.
|
||||||
*
|
*
|
||||||
* This function is similar to normalize_path_copy(), but stripped down
|
* This function is similar to normalize_path_copy(), but stripped down
|
||||||
* to meet check_ref_format's simpler needs.
|
* to meet check_ref_format's simpler needs.
|
||||||
@ -21,7 +21,7 @@ static const char builtin_check_ref_format_usage[] =
|
|||||||
static void collapse_slashes(char *dst, const char *src)
|
static void collapse_slashes(char *dst, const char *src)
|
||||||
{
|
{
|
||||||
char ch;
|
char ch;
|
||||||
char prev = '\0';
|
char prev = '/';
|
||||||
|
|
||||||
while ((ch = *src++) != '\0') {
|
while ((ch = *src++) != '\0') {
|
||||||
if (prev == '/' && ch == prev)
|
if (prev == '/' && ch == prev)
|
||||||
|
2
refs.c
2
refs.c
@ -862,7 +862,7 @@ int for_each_rawref(each_ref_fn fn, void *cb_data)
|
|||||||
|
|
||||||
static inline int bad_ref_char(int ch)
|
static inline int bad_ref_char(int ch)
|
||||||
{
|
{
|
||||||
if (((unsigned) ch) <= ' ' ||
|
if (((unsigned) ch) <= ' ' || ch == 0x7f ||
|
||||||
ch == '~' || ch == '^' || ch == ':' || ch == '\\')
|
ch == '~' || ch == '^' || ch == ':' || ch == '\\')
|
||||||
return 1;
|
return 1;
|
||||||
/* 2.13 Pattern Matching Notation */
|
/* 2.13 Pattern Matching Notation */
|
||||||
|
@ -18,6 +18,9 @@ invalid_ref 'foo'
|
|||||||
valid_ref 'foo/bar/baz'
|
valid_ref 'foo/bar/baz'
|
||||||
valid_ref 'refs///heads/foo'
|
valid_ref 'refs///heads/foo'
|
||||||
invalid_ref 'heads/foo/'
|
invalid_ref 'heads/foo/'
|
||||||
|
valid_ref '/heads/foo'
|
||||||
|
valid_ref '///heads/foo'
|
||||||
|
invalid_ref '/foo'
|
||||||
invalid_ref './foo'
|
invalid_ref './foo'
|
||||||
invalid_ref '.refs/foo'
|
invalid_ref '.refs/foo'
|
||||||
invalid_ref 'heads/foo..bar'
|
invalid_ref 'heads/foo..bar'
|
||||||
@ -27,6 +30,9 @@ invalid_ref 'heads/foo.lock'
|
|||||||
valid_ref 'heads/foo@bar'
|
valid_ref 'heads/foo@bar'
|
||||||
invalid_ref 'heads/v@{ation'
|
invalid_ref 'heads/v@{ation'
|
||||||
invalid_ref 'heads/foo\bar'
|
invalid_ref 'heads/foo\bar'
|
||||||
|
invalid_ref "$(printf 'heads/foo\t')"
|
||||||
|
invalid_ref "$(printf 'heads/foo\177')"
|
||||||
|
valid_ref "$(printf 'heads/fu\303\237')"
|
||||||
|
|
||||||
test_expect_success "check-ref-format --branch @{-1}" '
|
test_expect_success "check-ref-format --branch @{-1}" '
|
||||||
T=$(git write-tree) &&
|
T=$(git write-tree) &&
|
||||||
@ -70,7 +76,10 @@ invalid_ref_normalized() {
|
|||||||
|
|
||||||
valid_ref_normalized 'heads/foo' 'heads/foo'
|
valid_ref_normalized 'heads/foo' 'heads/foo'
|
||||||
valid_ref_normalized 'refs///heads/foo' 'refs/heads/foo'
|
valid_ref_normalized 'refs///heads/foo' 'refs/heads/foo'
|
||||||
|
valid_ref_normalized '/heads/foo' 'heads/foo'
|
||||||
|
valid_ref_normalized '///heads/foo' 'heads/foo'
|
||||||
invalid_ref_normalized 'foo'
|
invalid_ref_normalized 'foo'
|
||||||
|
invalid_ref_normalized '/foo'
|
||||||
invalid_ref_normalized 'heads/foo/../bar'
|
invalid_ref_normalized 'heads/foo/../bar'
|
||||||
invalid_ref_normalized 'heads/./foo'
|
invalid_ref_normalized 'heads/./foo'
|
||||||
invalid_ref_normalized 'heads\foo'
|
invalid_ref_normalized 'heads\foo'
|
||||||
|
Loading…
Reference in New Issue
Block a user