git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Manav Rathi <mnvrth@gmail.com>
To: git@vger.kernel.org
Cc: pclouds@gmail.com, Manav Rathi <mnvrth@gmail.com>
Subject: [PATCH] docs: improve discoverability of exclude pathspec
Date: Sun, 24 Sep 2017 21:47:16 +0530	[thread overview]
Message-ID: <CAEuZsW8vR0LesL=+ZoiFa=BBwhhm=KON+U3H2H9sNdTT+jgBkQ@mail.gmail.com> (raw)

The ability to exclude paths in pathspecs is not mentioned in the man
pages of git grep and other commands where it might be useful.

Add a pointer to the pathspec syntax and a quick example in the git
grep man page 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.
- Perform general touch ups of surrounding lines.

Signed-off-by: Manav Rathi <mnvrth@gmail.com>
---
 Documentation/git-add.txt          | 27 ++++++++++++++++-----------
 Documentation/git-grep.txt         |  6 ++++++
 Documentation/git-status.txt       |  2 ++
 Documentation/glossary-content.txt |  2 +-
 t/t6132-pathspec-exclude.sh        | 13 ++++++++++++-
 5 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index f4169fb..6f76f39 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -50,17 +50,22 @@ commit.
 OPTIONS
 -------
 <pathspec>...::
- Files to add content from.  Fileglobs (e.g. `*.c`) can
- be given to add all matching files.  Also a
- leading directory name (e.g. `dir` to add `dir/file1`
- and `dir/file2`) can be given to update the index to
- match the current state of the directory as a whole (e.g.
- specifying `dir` will record not just a file `dir/file1`
- modified in the working tree, a file `dir/file2` added to
- the working tree, but also a file `dir/file3` removed from
- the working tree.  Note that older versions of Git used
- to ignore removed files; use `--no-all` option if you want
- to add modified or new files but ignore removed ones.
+ Files to add content from.
++
+File globs (e.g. `*.c`) can be given to add all matching files.  A
+leading directory name (e.g. `dir` to add `dir/file1` and `dir/file2`)
+can be given to update the index to match the current state of the
+directory as a whole.
++
+Note that specifying `dir` will record not just a file `dir/file1`
+modified in the working tree, a file `dir/file2` added to the working
+tree, but also a file `dir/file3` removed from the working tree.
+Older versions of Git used to ignore removed files; use the `--no-all`
+option if you want to add new and modified files but ignore removed
+ones.
++
+For more details about the <pathspec> syntax, see the 'pathspec' entry
+in linkgit:gitglossary[7].

 -n::
 --dry-run::
diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt
index 720c785..18b4947 100644
--- a/Documentation/git-grep.txt
+++ b/Documentation/git-grep.txt
@@ -289,6 +289,9 @@ providing this option will cause it to die.
 <pathspec>...::
  If given, limit the search to paths matching at least one pattern.
  Both leading paths match and glob(7) patterns are supported.
++
+For more details about the <pathspec> syntax, see the 'pathspec' entry
+in linkgit:gitglossary[7].

 Examples
 --------
@@ -305,6 +308,9 @@ Examples
  Looks for a line that has `NODE` or `Unexpected` in
  files that have lines that match both.

+`git grep solution -- :^Documentation`::
+ Looks for `solution`, excluding files in `Documentation`.
+
 GIT
 ---
 Part of the linkgit:git[1] suite
diff --git a/Documentation/git-status.txt b/Documentation/git-status.txt
index d47f198..9f3a78a 100644
--- a/Documentation/git-status.txt
+++ b/Documentation/git-status.txt
@@ -111,6 +111,8 @@ configuration variable documented in linkgit:git-config[1].
  without options are equivalent to 'always' and 'never'
  respectively.

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

 OUTPUT
 ------
diff --git a/Documentation/glossary-content.txt
b/Documentation/glossary-content.txt
index b71b943..6b8888d 100644
--- a/Documentation/glossary-content.txt
+++ b/Documentation/glossary-content.txt
@@ -407,7 +407,7 @@ these forms:

 exclude;;
  After a path matches any non-exclude pathspec, it will be run
- through all exclude pathspec (magic signature: `!` or its
+ through all exclude pathspecs (magic signature: `!` or its
  synonym `^`). If it matches, the path is ignored.  When there
  is no non-exclude pathspec, the exclusion is applied to the
  result set as if invoked without any pathspec.
diff --git a/t/t6132-pathspec-exclude.sh b/t/t6132-pathspec-exclude.sh
index 9dd5cde..7ce91ef 100755
--- a/t/t6132-pathspec-exclude.sh
+++ b/t/t6132-pathspec-exclude.sh
@@ -25,7 +25,7 @@ EOF
  test_cmp expect actual
 '

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

+test_expect_success 'multiple exclusions' '
+ git ls-files -- :^*/file2 :^sub2 >actual &&
+ cat <<EOF >expect &&
+file
+sub/file
+sub/sub/file
+sub/sub/sub/file
+EOF
+ test_cmp expect actual
+'
+
 test_done
-- 
2.10.1

             reply	other threads:[~2017-09-24 16:17 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-24 16:17 Manav Rathi [this message]
2017-09-25  1:03 ` [PATCH] docs: improve discoverability of exclude pathspec Junio C Hamano
2017-09-25  8:09   ` [PATCHv2] " Manav Rathi
2017-09-25  8:59     ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEuZsW8vR0LesL=+ZoiFa=BBwhhm=KON+U3H2H9sNdTT+jgBkQ@mail.gmail.com' \
    --to=mnvrth@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).