git/t/t3001-ls-files-others-exclude.sh
Junio C Hamano f87f949748 git-ls-files: --exclude mechanism updates.
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>
2005-07-25 17:03:52 -07:00

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'