Skip to content

Commit 93dbefb

Browse files
mnvrgitster
authored andcommitted
docs: improve discoverability of exclude pathspec
The ability to exclude paths with a negative pathspec is not mentioned in the man pages for git grep and other commands where it might be useful. Add an example and a pointer to the pathspec glossary entry in the man page for git grep to help the user to discover this ability. Add similar pointers from the git-add and git-status man pages. Additionally, - Add a test for the behaviour when multiple exclusions are present. - Add a test for the ^ alias. - Improve name of existing test. - Improve grammar in glossary description of the exclude pathspec. Helped-by: Junio C Hamano <[email protected]> Signed-off-by: Manav Rathi <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 7234152 commit 93dbefb

File tree

5 files changed

+24
-2
lines changed

5 files changed

+24
-2
lines changed

Documentation/git-add.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ OPTIONS
6161
the working tree. Note that older versions of Git used
6262
to ignore removed files; use `--no-all` option if you want
6363
to add modified or new files but ignore removed ones.
64+
+
65+
For more details about the <pathspec> syntax, see the 'pathspec' entry
66+
in linkgit:gitglossary[7].
6467

6568
-n::
6669
--dry-run::

Documentation/git-grep.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,9 @@ OPTIONS
293293
<pathspec>...::
294294
If given, limit the search to paths matching at least one pattern.
295295
Both leading paths match and glob(7) patterns are supported.
296+
+
297+
For more details about the <pathspec> syntax, see the 'pathspec' entry
298+
in linkgit:gitglossary[7].
296299

297300
Examples
298301
--------
@@ -309,6 +312,9 @@ Examples
309312
Looks for a line that has `NODE` or `Unexpected` in
310313
files that have lines that match both.
311314

315+
`git grep solution -- :^Documentation`::
316+
Looks for `solution`, excluding files in `Documentation`.
317+
312318
GIT
313319
---
314320
Part of the linkgit:git[1] suite

Documentation/git-status.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ configuration variable documented in linkgit:git-config[1].
108108
without options are equivalent to 'always' and 'never'
109109
respectively.
110110

111+
<pathspec>...::
112+
See the 'pathspec' entry in linkgit:gitglossary[7].
111113

112114
OUTPUT
113115
------

Documentation/glossary-content.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ these forms:
407407

408408
exclude;;
409409
After a path matches any non-exclude pathspec, it will be run
410-
through all exclude pathspec (magic signature: `!` or its
410+
through all exclude pathspecs (magic signature: `!` or its
411411
synonym `^`). If it matches, the path is ignored. When there
412412
is no non-exclude pathspec, the exclusion is applied to the
413413
result set as if invoked without any pathspec.

t/t6132-pathspec-exclude.sh

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ EOF
2525
test_cmp expect actual
2626
'
2727

28-
test_expect_success 'exclude only no longer errors out' '
28+
test_expect_success 'exclude only pathspec uses default implicit pathspec' '
2929
git log --oneline --format=%s -- . ":(exclude)sub" >expect &&
3030
git log --oneline --format=%s -- ":(exclude)sub" >actual &&
3131
test_cmp expect actual
@@ -183,4 +183,15 @@ EOF
183183
test_cmp expect actual
184184
'
185185

186+
test_expect_success 'multiple exclusions' '
187+
git ls-files -- ":^*/file2" ":^sub2" >actual &&
188+
cat <<-\EOF >expect &&
189+
file
190+
sub/file
191+
sub/sub/file
192+
sub/sub/sub/file
193+
EOF
194+
test_cmp expect actual
195+
'
196+
186197
test_done

0 commit comments

Comments
 (0)