Subject: Re: [PATCH] bash completion: Add completion for 'git grep'

From: "Shawn O. Pearce" <[email-masked]>
Date: Sun, 3 Aug 2008 21:06:34 -0700

Lee Marlow <[email-masked]> wrote:
> On Sat, Aug 2, 2008 at 3:05 PM, Shawn O. Pearce <[email-masked]> wrote:
> >
> > Hmm.  The has_doubledash test seems redundant since we don't do
> > anything with args that aren't --foo.  Even though git-grep will
> > accept a tree-ish and thus completion of __git_refs here may
> 
> I haven't found myself using grep to search anything but the current
> working directory.  I wonder whether __git_complete_file would be
> better than __git_refs.  My issue with __git_complete_file in this
> case and also doing completion for 'git mv' is that it falls back to
> just __git_refs.  Would it be better if it fell back to __git_refs and
> ls-tree for HEAD?  That way when using completion to get to
> Documentation/git-grep.txt,  it doesn't also show completions for
> Documentation/git-grep.{1,html,xml}.

Hmm.  __git_complete_file is about completing something in a tree-ish,
which is really most likely not what we want for grep.  Its useful for
git-show and git-cat-file, and that's about it.  Most git tools prefer
a calling format of "tree-ish -- paths ..." and not "tree-ish:path".

Though I think you have an excellent point about completing paths
by ls-tree for HEAD rather than the working directory itself,
as then you can avoid produced files.  But in practice how often
do you pass a single file or a couple of files to the grep utility
and are having problems bypassing the build products?  Compared to
just running grep on the entire source tree to find hits?  I never
use grep to search in a single file, but I call it several times
a day to look for where a function is defined or called.

After having thought about it your original patch makes the most
sense, but without the has_doubledash test.

-- 
Shawn.