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:
Nguyễn Thái Ngọc Duy
2012-10-15 13:26:02 +07:00
committed by Junio C Hamano
parent 4c251e5cb5
commit 237ec6e40d
4 changed files with 77 additions and 1 deletions

View File

@ -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

View File

@ -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