mirror of
https://github.com/git/git.git
synced 2024-11-25 02:44:48 +08:00
f87f949748
Add --exclude-per-directory=<name> option that specifies a file to contain exclude patterns local to that directory and its subdirectories. Update the exclusion logic to be able to say "include files that match this more specific pattern, even though later exclude patterns may match them". Also enhances that a pattern can contain '/' in which case fnmatch is called with FNM_PATHNAME flag to match the entire path. Signed-off-by: Junio C Hamano <junkio@cox.net>
56 lines
776 B
Bash
Executable File
56 lines
776 B
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2005 Junio C Hamano
|
|
#
|
|
|
|
test_description='git-ls-files --others --exclude
|
|
|
|
This test runs git-ls-files --others and tests --exclude patterns.
|
|
'
|
|
|
|
. ./test-lib.sh
|
|
|
|
rm -fr one three
|
|
for dir in . one one/two three
|
|
do
|
|
mkdir -p $dir &&
|
|
for i in 1 2 3 4 5
|
|
do
|
|
>$dir/a.$i
|
|
done
|
|
done
|
|
|
|
cat >expect <<EOF
|
|
a.2
|
|
a.4
|
|
a.5
|
|
one/a.3
|
|
one/a.4
|
|
one/a.5
|
|
one/two/a.3
|
|
one/two/a.5
|
|
three/a.2
|
|
three/a.3
|
|
three/a.4
|
|
three/a.5
|
|
EOF
|
|
|
|
echo '.gitignore
|
|
output
|
|
expect
|
|
.gitignore
|
|
' >.git/ignore
|
|
|
|
echo '*.1
|
|
/*.3' >.gitignore
|
|
echo '*.2
|
|
two/*.4' >one/.gitignore
|
|
|
|
test_expect_success \
|
|
'git-ls-files --others --exclude.' \
|
|
'git-ls-files --others \
|
|
--exclude-per-directory=.gitignore \
|
|
--exclude-from=.git/ignore \
|
|
>output &&
|
|
diff -u expect output'
|