Browse Source

Merge branch 'mh/check-ref-format-print-normalize' into maint

* mh/check-ref-format-print-normalize:
  Forbid DEL characters in reference names
  check-ref-format --print: Normalize refnames that start with slashes
maint
Junio C Hamano 13 years ago
parent
commit
be5acb3b63
  1. 6
      builtin/check-ref-format.c
  2. 2
      refs.c
  3. 9
      t/t1402-check-ref-format.sh

6
builtin/check-ref-format.c

@ -12,8 +12,8 @@ static const char builtin_check_ref_format_usage[] = @@ -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[] = @@ -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

@ -837,7 +837,7 @@ int for_each_rawref(each_ref_fn fn, void *cb_data) @@ -837,7 +837,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 */

9
t/t1402-check-ref-format.sh

@ -18,6 +18,9 @@ invalid_ref 'foo' @@ -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' @@ -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() { @@ -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…
Cancel
Save