On Mon, 12 Sep 2005, Junio C Hamano wrote:
I do not much care about other grep flags but I think you forgot
to special case '-e', so what is in the "master" branch has one
extra commit on top of it for that (it does not seem to have
percolated down yet).
Actually, the more I think about it, the more I think Morten was right,
and the git-grep case statement should just put all flags in "$flags", and
any git-ls-files flags can be handled specially before.
We also need special casing for grep flags that take an argument. So the
end result might be something like the following..
...
case "$pattern" in
# 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
;;
# We assume everything else is a regular grep pattern
-*)
flags="$flags $pattern"
shift
;;
...
instead. And it's entirely possible that we'd never want to even bother
with things like --others and --exclude* at all.
Linus