Browse Source

Merge branch 'en/check-ignore' into maint

"git check-ignore" did not work when the given path is explicitly
marked as not ignored with a negative entry in the .gitignore file.

* en/check-ignore:
  check-ignore: fix documentation and implementation to match
maint
Junio C Hamano 5 years ago
parent
commit
16a4bf1035
  1. 12
      Documentation/git-check-ignore.txt
  2. 3
      builtin/check-ignore.c
  3. 39
      t/t0008-ignores.sh

12
Documentation/git-check-ignore.txt

@ -30,9 +30,15 @@ OPTIONS @@ -30,9 +30,15 @@ OPTIONS
valid with a single pathname.

-v, --verbose::
Also output details about the matching pattern (if any)
for each given pathname. For precedence rules within and
between exclude sources, see linkgit:gitignore[5].
Instead of printing the paths that are excluded, for each path
that matches an exclude pattern, print the exclude pattern
together with the path. (Matching an exclude pattern usually
means the path is excluded, but if the pattern begins with '!'
then it is a negated pattern and matching it means the path is
NOT excluded.)
+
For precedence rules within and between exclude sources, see
linkgit:gitignore[5].

--stdin::
Read pathnames from the standard input, one per line,

3
builtin/check-ignore.c

@ -108,6 +108,9 @@ static int check_ignore(struct dir_struct *dir, @@ -108,6 +108,9 @@ static int check_ignore(struct dir_struct *dir,
int dtype = DT_UNKNOWN;
pattern = last_matching_pattern(dir, &the_index,
full_path, &dtype);
if (!verbose && pattern &&
pattern->flags & PATTERN_FLAG_NEGATIVE)
pattern = NULL;
}
if (!quiet && (pattern || show_non_matching))
output_pattern(pathspec.items[i].original, pattern);

39
t/t0008-ignores.sh

@ -424,9 +424,24 @@ test_expect_success 'local ignore inside a sub-directory with --verbose' ' @@ -424,9 +424,24 @@ test_expect_success 'local ignore inside a sub-directory with --verbose' '
)
'

test_expect_success_multi 'nested include' \
'a/b/.gitignore:8:!on* a/b/one' '
test_check_ignore "a/b/one"
test_expect_success 'nested include of negated pattern' '
expect "" &&
test_check_ignore "a/b/one" 1
'

test_expect_success 'nested include of negated pattern with -q' '
expect "" &&
test_check_ignore "-q a/b/one" 1
'

test_expect_success 'nested include of negated pattern with -v' '
expect "a/b/.gitignore:8:!on* a/b/one" &&
test_check_ignore "-v a/b/one" 0
'

test_expect_success 'nested include of negated pattern with -v -n' '
expect "a/b/.gitignore:8:!on* a/b/one" &&
test_check_ignore "-v -n a/b/one" 0
'

############################################################################
@ -460,7 +475,6 @@ test_expect_success 'cd to ignored sub-directory' ' @@ -460,7 +475,6 @@ test_expect_success 'cd to ignored sub-directory' '
expect_from_stdin <<-\EOF &&
foo
twoooo
../one
seven
../../one
EOF
@ -543,7 +557,6 @@ test_expect_success 'global ignore' ' @@ -543,7 +557,6 @@ test_expect_success 'global ignore' '
globalthree
a/globalthree
a/per-repo
globaltwo
EOF
test_check_ignore "globalone per-repo globalthree a/globalthree a/per-repo not-ignored globaltwo"
'
@ -586,17 +599,7 @@ EOF @@ -586,17 +599,7 @@ EOF
cat <<-\EOF >expected-default
one
a/one
a/b/on
a/b/one
a/b/one one
a/b/one two
"a/b/one\"three"
a/b/two
a/b/twooo
globaltwo
a/globaltwo
a/b/globaltwo
b/globaltwo
EOF
cat <<-EOF >expected-verbose
.gitignore:1:one one
@ -696,8 +699,12 @@ cat <<-EOF >expected-all @@ -696,8 +699,12 @@ cat <<-EOF >expected-all
$global_excludes:2:!globaltwo ../b/globaltwo
:: c/not-ignored
EOF
cat <<-EOF >expected-default
../one
one
b/twooo
EOF
grep -v '^:: ' expected-all >expected-verbose
sed -e 's/.* //' expected-verbose >expected-default

broken_c_unquote stdin >stdin0


Loading…
Cancel
Save