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>";
|
||||
|
||||
/*
|
||||
* Replace each run of adjacent slashes in src with a single slash,
|
||||
* and write the result to dst.
|
||||
* Remove leading slashes and replace each run of adjacent slashes in
|
||||
* src with a single slash, and write the result to dst.
|
||||
*
|
||||
* This function is similar to normalize_path_copy(), but stripped down
|
||||
* 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)
|
||||
{
|
||||
char ch;
|
||||
char prev = '\0';
|
||||
char prev = '/';
|
||||
|
||||
while ((ch = *src++) != '\0') {
|
||||
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)
|
||||
{
|
||||
if (((unsigned) ch) <= ' ' ||
|
||||
if (((unsigned) ch) <= ' ' || ch == 0x7f ||
|
||||
ch == '~' || ch == '^' || ch == ':' || ch == '\\')
|
||||
return 1;
|
||||
/* 2.13 Pattern Matching Notation */
|
||||
|
@ -18,6 +18,9 @@ invalid_ref 'foo'
|
||||
valid_ref 'foo/bar/baz'
|
||||
valid_ref 'refs///heads/foo'
|
||||
invalid_ref 'heads/foo/'
|
||||
valid_ref '/heads/foo'
|
||||
valid_ref '///heads/foo'
|
||||
invalid_ref '/foo'
|
||||
invalid_ref './foo'
|
||||
invalid_ref '.refs/foo'
|
||||
invalid_ref 'heads/foo..bar'
|
||||
@ -27,6 +30,9 @@ invalid_ref 'heads/foo.lock'
|
||||
valid_ref 'heads/foo@bar'
|
||||
invalid_ref 'heads/v@{ation'
|
||||
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}" '
|
||||
T=$(git write-tree) &&
|
||||
@ -70,7 +76,10 @@ invalid_ref_normalized() {
|
||||
|
||||
valid_ref_normalized 'heads/foo' '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 'heads/foo/../bar'
|
||||
invalid_ref_normalized 'heads/./foo'
|
||||
invalid_ref_normalized 'heads\foo'
|
||||
|
Loading…
Reference in New Issue
Block a user