built-in "git grep"
commit5010cb5fcca30269ad25f2eb38b31455af3205d7
authorJunio C Hamano <junkio@cox.net>
Mon, 1 May 2006 06:28:15 +0000 (30 23:28 -0700)
committerJunio C Hamano <junkio@cox.net>
Mon, 1 May 2006 08:26:46 +0000 (1 01:26 -0700)
tree7ec4dfd393fba892fd3fa1838100974ea54d3155
parent66ae0c7702e68765dad17aa05c5d9255d999216c
built-in "git grep"

This attempts to set up built-in "git grep" to further reduce
our dependence on the shell, while at the same time optionally
allowing to run grep against object database.  You could do
funky things like these:

git grep --cached -e pattern ;# grep from index
git grep -e pattern master ;# or in a rev
git grep -e pattern master next ;# or in multiple revs
git grep -e pattern pu^@ ;# even like this with an
;# extension from another topic ;-)
git grep -e pattern master..next ;# or even from rev ranges
git grep -e pattern master~20:Documentation
;# or an arbitrary tree
git grep -e pattern next:git-commit.sh
         ;# or an arbitrary blob

Right now, it does not understand and/or obey many options grep
should accept, and the pattern must be given with -e option due
to the way the parameter parser is structured, both of which
obviously need to be fixed for usability.

But this is going in the right direction.  The shell script
version is one of the worst Portability offender in the git
barebone Porcelainish; it uses xargs -0 to pass paths around and
shell arrays to sift flags and parameters.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Makefile
builtin-grep.c [new file with mode: 0644]
builtin.h
git.c