git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git-grep: option parsing conflicts with prefix-dash searches

From
Jeff King <peff@peff.net>
Date
Feb 6, 2010, 11:58 UTC
Message-ID
<20100206115817.GA11605@sigill.intra.peff.net>
In-Reply-To
<7v7hqrdkxb.fsf@alter.siamese.dyndns.org>
On Fri, Feb 05, 2010 at 08:53:36PM -0800, Junio C Hamano wrote:
Show 6 quoted lines
> >   git grep -- pattern revision -- pathname
> [...]
> I don't think if "ambiguous or not" is what we are after to begin with.
> 
> I have known GNU extended grep implementations long enough but never saw
> that "--" used to quote a pattern.  Is it worth supporting to begin with?

I think so. It was the first thing the original poster in this thread tried. It is also something I have tried (and still do, then grumblingly retype "-e pattern"). And it certainly makes sense from a user perspective; it is the same end-of-options signal that most other programs take.

So I think it is a convenient interface improvement, nothing more. If it were somehow onerous to support, I would say that no, it is not worth it. But it really is only a few lines of code, and I do not think the behavior change is hurting any real-world cases (which is what I was trying to show earlier).

I suspect you are not familiar with it because you are enough of an old-timer to have worked with the many non-GNU greps that require "-e" to specify a funny pattern and so got used to that habit.

> I would say "git grep -- pattern" is sufficiently insane enough that
> I'm not worried about it at all.  Interpreting "git grep --" as a request
> to look for double-dash feels million times saner than that, actually.

I don't think "grep --" is sane at all, since it is broken under GNU grep. And because "--" is a special token in option parsing, I would expect it to need "git grep -e --".

> Unless somebody comes up with example of that pattern's wide use.  Point
> me to some well known open source software's source trees that use "--"
> for such a purpose in one of its shell script or Makefile.
OK. Try:
  http://www.google.com/codesearch?hl=en&sa=N&q=grep.*%5Cs--%5Cs++lang:shell&ct=rr&cs_r=lang:shell

Some are false positives, but it looks like libtool's generated configure scripts use it (which is in literally hundreds of projects), openssh's fixpaths script, ffmpeg's configure script, even a use in a plan9 script.

And that's just the first page of results. So I think I am not the only one.

-Peff
Previous: Miles BaderNext: Junio C Hamano
Message 9 of 12 in “git-grep: option parsing conflicts with prefix-dash searches”
  1. Jan EngelhardtFeb 5, 2010
  2. Jan EngelhardtFeb 5, 2010
  3. Santi BéjarFeb 5, 2010
  4. Junio C HamanoFeb 5, 2010
  5. Junio C HamanoFeb 5, 2010
  6. Jeff KingFeb 6, 2010
  7. Junio C HamanoFeb 6, 2010
  8. Miles BaderFeb 6, 2010
  9. Jeff KingFeb 6, 2010
  10. Junio C HamanoFeb 6, 2010
  11. Jeff KingFeb 7, 2010
  12. Junio C HamanoFeb 8, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.