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

Improve "git grep" flags handling

From
Linus Torvalds <torvalds@osdl.org>
Date
Sep 12, 2005, 22:22 UTC
Message-ID
<Pine.LNX.4.58.0509121519310.3266@g5.osdl.org>
In-Reply-To
<Pine.LNX.4.58.0509121500400.3266@g5.osdl.org>

This allows any arbitrary flags to "grep", and knows about the few special grep flags that take an argument too.

It also allows some flags for git-ls-files, although their usefulness is questionable.

With this, something line
	git grep -w -1 pattern
works, without the script enumerating every possible flag.
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---
On Mon, 12 Sep 2005, Linus Torvalds wrote:
> 
> We also need special casing for grep flags that take an argument.  So the
> end result might be something like the following..
diff --git a/git-grep.sh b/git-grep.sh
--- a/git-grep.sh
+++ b/git-grep.sh
@@ -1,25 +1,38 @@
 #!/bin/sh
 flags=
+git_flags=
 while :; do
   pattern="$1"
   case "$pattern" in
-  -i|-I|-a|-E|-H|-h|-l)
-    flags="$flags $pattern"
-    shift
-    ;;
+  # git-ls-file specific flags
+  --others|--exclude=*|--exclude-from=*|--exclude-per-directory=*)
+      git_flags="$git_flags $pattern"
+      shift
+      ;;
+
+  # grep flags with an argument
+  -B|-C|-m)
+      flags="$flags $pattern $2"
+      shift
+      shift
+      ;;
+
+  # grep 'pattern' argument
   -e)
-    pattern="$2"
-    shift
-    break
-    ;;
+      pattern="$2"
+      shift
+      break
+      ;;
+
+  # We assume everything else is a regular grep pattern
   -*)
-    echo "unknown flag $pattern" >&2
-    exit 1
-    ;;
+      flags="$flags $pattern"
+      shift
+      ;;
   *)
     break
     ;;
   esac
 done
 shift
-git-ls-files -z "$@" | xargs -0 grep $flags -e "$pattern"
+git-ls-files -z $git_flags "$@" | xargs -0 grep $flags -e "$pattern"
Previous: Linus TorvaldsNext: Junio C Hamano
Message 6 of 13 in “Add "git grep" helper”
  1. Linus TorvaldsSep 12, 2005
  2. Morten WelinderSep 12, 2005
  3. Linus TorvaldsSep 12, 2005
  4. Junio C HamanoSep 12, 2005
  5. Linus TorvaldsSep 12, 2005
  6. Improve "git grep" flags handlingLinus Torvalds, Sep 12, 2005
  7. Junio C HamanoSep 12, 2005
  8. Linus TorvaldsSep 12, 2005
  9. Junio C HamanoSep 12, 2005
  10. Linus TorvaldsSep 12, 2005
  11. Junio C HamanoSep 12, 2005
  12. Improve "git grep" flags handlingJunio C Hamano, Sep 13, 2005
  13. Junio C HamanoSep 12, 2005

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.