summaryrefslogtreecommitdiff
path: root/git-grep.sh
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@osdl.org>2005-09-12 19:06:10 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-09-12 20:20:03 (GMT)
commitf22cc3fcbfe7755154a3a151215abd39162e2e85 (patch)
tree8134b80bab67ee5e8f7979cba829322f71bcba37 /git-grep.sh
parentba8a4970c790c9a03bb3ed72e24d86bd8aa11a67 (diff)
downloadgit-f22cc3fcbfe7755154a3a151215abd39162e2e85.zip
git-f22cc3fcbfe7755154a3a151215abd39162e2e85.tar.gz
git-f22cc3fcbfe7755154a3a151215abd39162e2e85.tar.bz2
[PATCH] Add "git grep" helper
Very convenient shorthand for git-ls-files [file-patterns] | xargs grep <pattern> which I tend to do all the time. Yes, it's trivial, but it's really nice. I can do git grep '\<some_variable\>' arch/i386 include/asm-i386 and it does exactly what you'd think it does. And since it just uses the normal git-ls-files file patterns, you can do things like git grep something 'include/*.h' and it will search all header files under the include/ subdirectory. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-grep.sh')
-rwxr-xr-xgit-grep.sh20
1 files changed, 20 insertions, 0 deletions
diff --git a/git-grep.sh b/git-grep.sh
new file mode 100755
index 0000000..db2296c
--- /dev/null
+++ b/git-grep.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+flags=
+while :; do
+ pattern="$1"
+ case "$pattern" in
+ -i|-I|-a|-E|-H|-h|-l)
+ flags="$flags $pattern"
+ shift
+ ;;
+ -*)
+ echo "unknown flag $pattern" >&2
+ exit 1
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+shift
+git-ls-files -z "$@" | xargs -0 grep $flags "$pattern"