1
0
mirror of https://github.com/git/git.git synced 2024-11-18 02:23:52 +01:00

[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>
This commit is contained in:
Linus Torvalds 2005-09-12 12:06:10 -07:00 committed by Junio C Hamano
parent ba8a4970c7
commit f22cc3fcbf
2 changed files with 21 additions and 1 deletions

@ -76,7 +76,7 @@ SCRIPT_SH = \
git-tag.sh git-verify-tag.sh git-whatchanged.sh git.sh \
git-applymbox.sh git-applypatch.sh \
git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \
git-merge-resolve.sh
git-merge-resolve.sh git-grep.sh
SCRIPT_PERL = \
git-archimport.perl git-cvsimport.perl git-relink.perl \

20
git-grep.sh Executable file

@ -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"