Support "**" wildcard in .gitignore and .gitattributes
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
4c251e5cb5
commit
237ec6e40d
@ -216,6 +216,43 @@ test_expect_success 'patterns starting with exclamation' '
|
||||
attr_check "!f" foo
|
||||
'
|
||||
|
||||
test_expect_success '"**" test' '
|
||||
echo "**/f foo=bar" >.gitattributes &&
|
||||
cat <<\EOF >expect &&
|
||||
f: foo: bar
|
||||
a/f: foo: bar
|
||||
a/b/f: foo: bar
|
||||
a/b/c/f: foo: bar
|
||||
EOF
|
||||
git check-attr foo -- "f" >actual 2>err &&
|
||||
git check-attr foo -- "a/f" >>actual 2>>err &&
|
||||
git check-attr foo -- "a/b/f" >>actual 2>>err &&
|
||||
git check-attr foo -- "a/b/c/f" >>actual 2>>err &&
|
||||
test_cmp expect actual &&
|
||||
test_line_count = 0 err
|
||||
'
|
||||
|
||||
test_expect_success '"**" with no slashes test' '
|
||||
echo "a**f foo=bar" >.gitattributes &&
|
||||
git check-attr foo -- "f" >actual &&
|
||||
cat <<\EOF >expect &&
|
||||
f: foo: unspecified
|
||||
af: foo: bar
|
||||
axf: foo: bar
|
||||
a/f: foo: unspecified
|
||||
a/b/f: foo: unspecified
|
||||
a/b/c/f: foo: unspecified
|
||||
EOF
|
||||
git check-attr foo -- "f" >actual 2>err &&
|
||||
git check-attr foo -- "af" >>actual 2>err &&
|
||||
git check-attr foo -- "axf" >>actual 2>err &&
|
||||
git check-attr foo -- "a/f" >>actual 2>>err &&
|
||||
git check-attr foo -- "a/b/f" >>actual 2>>err &&
|
||||
git check-attr foo -- "a/b/c/f" >>actual 2>>err &&
|
||||
test_cmp expect actual &&
|
||||
test_line_count = 0 err
|
||||
'
|
||||
|
||||
test_expect_success 'setup bare' '
|
||||
git clone --bare . bare.git &&
|
||||
cd bare.git
|
||||
|
@ -220,4 +220,22 @@ test_expect_success 'pattern matches prefix completely' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'ls-files with "**" patterns' '
|
||||
cat <<\EOF >expect &&
|
||||
a.1
|
||||
one/a.1
|
||||
one/two/a.1
|
||||
three/a.1
|
||||
EOF
|
||||
git ls-files -o -i --exclude "**/a.1" >actual
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
|
||||
test_expect_success 'ls-files with "**" patterns and no slashes' '
|
||||
: >expect &&
|
||||
git ls-files -o -i --exclude "one**a.1" >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Reference in New Issue
Block a user