summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: fee8825)
raw | patch | inline | side by side (parent: fee8825)
author | Junio C Hamano <junkio@cox.net> | |
Fri, 29 Jul 2005 06:53:29 +0000 (23:53 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Sat, 30 Jul 2005 00:21:47 +0000 (17:21 -0700) |
Update the tests and documentation to match the new "last one
determines its fate" semantics.
Signed-off-by: Junio C Hamano <junkio@cox.net>
determines its fate" semantics.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/git-ls-files.txt | patch | blob | history | |
t/t3001-ls-files-others-exclude.sh | patch | blob | history |
index 7ac6c7d84a701087f65d41ea06f82b80b3a7ef8f..d2072194059c65f92487c84c53b9f6b5da780d14 100644 (file)
per line. A line that starts with a '#' can be used as comment
for readability.
-The list of patterns that is in effect at a given time is
-built and ordered in the following way:
+There are three lists of patterns that are in effect at a given
+time. They are built and ordered in the following way:
- * --exclude=<pattern> and lines read from --exclude-from=<file>
- come at the beginning of the list of patterns, in the order
- given on the command line. Patterns that come from the file
- specified with --exclude-from are ordered in the same order
- as they appear in the file.
+ * --exclude=<pattern> from the command line; patterns are
+ ordered in the same order as they appear on the command line.
+
+ * lines read from --exclude-from=<file>; patterns are ordered
+ in the same order as they appear in the file.
* When --exclude-per-directory=<name> is specified, upon
entering a directory that has such a file, its contents are
are popped off when leaving the directory.
Each pattern in the pattern list specifies "a match pattern" and
-optionally the fate --- either a file that matches the pattern
-is considered excluded or included. By default, this being
-"exclude" mechanism, the fate is "excluded". A filename is
-examined against the patterns in the list, and the first match
-determines its fate.
+optionally the fate;n either a file that matches the pattern is
+considered excluded or included. A filename is matched against
+the patterns in the three lists; the --exclude-from list is
+checked first, then the --exclude-per-directory list, and then
+finally the --exclude list. The last match determines its fate.
+If there is no match in the three lists, the fate is "included".
A pattern specified on the command line with --exclude or read
from the file specified with --exclude-from is relative to the
*.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
+ *.html
# except foo.html which is maintained by hand
!foo.html
- *.html
$ git-ls-files --ignored \
--exclude='Documentation/*.[0-9]' \
--exclude-from=.git/ignore \
index 4b9380fa09aa91f0869fc3c2867bf7b22db20542..dbff346c0a45b2342d543802f57322b76f850cb4 100755 (executable)
for dir in . one one/two three
do
mkdir -p $dir &&
- for i in 1 2 3 4 5
+ for i in 1 2 3 4 5 6 7 8
do
>$dir/a.$i
done
a.2
a.4
a.5
+a.8
one/a.3
one/a.4
one/a.5
+one/a.7
+one/two/a.2
one/two/a.3
one/two/a.5
+one/two/a.7
+one/two/a.8
three/a.2
three/a.3
three/a.4
three/a.5
+three/a.8
EOF
echo '.gitignore
output
expect
.gitignore
-' >.git/ignore
+*.7
+!*.8' >.git/ignore
echo '*.1
-/*.3' >.gitignore
+/*.3
+!*.6' >.gitignore
echo '*.2
-two/*.4' >one/.gitignore
+two/*.4
+!*.7
+*.8' >one/.gitignore
+echo '!*.2
+!*.8' >one/two/.gitignore
test_expect_success \
- 'git-ls-files --others --exclude.' \
+ 'git-ls-files --others with various exclude options.' \
'git-ls-files --others \
+ --exclude=\*.6 \
--exclude-per-directory=.gitignore \
--exclude-from=.git/ignore \
>output &&