Message ID | 3e6136028ca3327b027d57c46fb8155ef3c0d6c5.1710781235.git.dsimic@manjaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | New config option for git-grep to include untracked files | expand |
Dragan Simic <dsimic@manjaro.org> writes: > ---no-index:: > - Search files in the current directory that is not managed by Git. > - > --untracked:: > In addition to searching in the tracked files in the working > tree, search also in untracked files. > > +--no-index:: > + Search files in the current directory that is not managed by Git. > + This option cannot be used together with `--cached` or `--untracked`. > + See also `grep.fallbackToNoIndex` in CONFIGURATION below. Hmph, this is not the fault of this patch, but the description is iffy. You can run "git grep --no-index" inside a directory that is managed by Git, and it behaves as if you gave --untracked, if I am not mistaken. What "--no-index" does is to pretend that there is no system called Git and work as if it were a strange implementation of "grep -r". The reader should be taught to understand the mode as such, because that understanding will apply whether the current directory happens to be part of a working tree managed by git, or not under control by git repository anywhere. There is no tracked or untracked or managed or anything like that, as we are pretending that there is no git, so it falls naturally that --cached or --untracked would not work. And from that point of view, swapping the order of "--no-index" and "--untracked" in this patch does make sense. All other options that specify which haystack to find the needle in are all about git; "--no-index" truly is an oddball that pretends that we live in a world without git, and as an oddball, we should move the description out from where it does not belong. It might also make sense to rethink where `--recurse-submodules` sits in the list of options while at it, as it also is an option that affects which haystack the search for the needle is carried out. > --no-exclude-standard:: > Also search in ignored files by not honoring the `.gitignore` > mechanism. Only useful with `--untracked`.
On 2024-03-19 01:55, Junio C Hamano wrote: > Dragan Simic <dsimic@manjaro.org> writes: > >> ---no-index:: >> - Search files in the current directory that is not managed by Git. >> - >> --untracked:: >> In addition to searching in the tracked files in the working >> tree, search also in untracked files. >> >> +--no-index:: >> + Search files in the current directory that is not managed by Git. >> + This option cannot be used together with `--cached` or >> `--untracked`. >> + See also `grep.fallbackToNoIndex` in CONFIGURATION below. > > Hmph, this is not the fault of this patch, but the description is > iffy. You can run "git grep --no-index" inside a directory that is > managed by Git, and it behaves as if you gave --untracked, if I am > not mistaken. > > What "--no-index" does is to pretend that there is no system called > Git and work as if it were a strange implementation of "grep -r". > The reader should be taught to understand the mode as such, because > that understanding will apply whether the current directory happens > to be part of a working tree managed by git, or not under control by > git repository anywhere. > > There is no tracked or untracked or managed or anything like that, > as we are pretending that there is no git, so it falls naturally > that --cached or --untracked would not work. > > And from that point of view, swapping the order of "--no-index" and > "--untracked" in this patch does make sense. All other options that > specify which haystack to find the needle in are all about git; > "--no-index" truly is an oddball that pretends that we live in a > world without git, and as an oddball, we should move the description > out from where it does not belong. It might also make sense to > rethink where `--recurse-submodules` sits in the list of options > while at it, as it also is an option that affects which haystack the > search for the needle is carried out. Thank you very much for your detailed review, as always. I'll try to incorporate all your remarks into the next version of this patch.
diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt index ade69f00ebdd..b377523381bb 100644 --- a/Documentation/git-grep.txt +++ b/Documentation/git-grep.txt @@ -28,7 +28,7 @@ SYNOPSIS [-f <file>] [-e] <pattern> [--and|--or|--not|(|)|-e <pattern>...] [--recurse-submodules] [--parent-basename <basename>] - [ [--[no-]exclude-standard] [--cached | --no-index | --untracked] | <tree>...] + [ [--[no-]exclude-standard] [--cached | --untracked | --no-index] | <tree>...] [--] [<pathspec>...] DESCRIPTION @@ -45,13 +45,15 @@ OPTIONS Instead of searching tracked files in the working tree, search blobs registered in the index file. ---no-index:: - Search files in the current directory that is not managed by Git. - --untracked:: In addition to searching in the tracked files in the working tree, search also in untracked files. +--no-index:: + Search files in the current directory that is not managed by Git. + This option cannot be used together with `--cached` or `--untracked`. + See also `grep.fallbackToNoIndex` in CONFIGURATION below. + --no-exclude-standard:: Also search in ignored files by not honoring the `.gitignore` mechanism. Only useful with `--untracked`.
Describe the dependency between --no-index and either of the --cached and --untracked options, which cannot be used together. As part of that, shuffle a couple of the options, to make the documentation flow a bit better; it makes more sense to describe first the options that have something in common, and to after that describe an option that has some dependency on the already described options. Signed-off-by: Dragan Simic <dsimic@manjaro.org> --- Documentation/git-grep.txt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)