Git grep wrapper for arguments re-ordering, that can use options after filenames.
This is "gErp", not "gRep".
Original git grep
command is sensitive to the order of arguments.
For example, you use git grep
, and you want to add option -l
in
tail, but you must type in the correct order.
# original git grep git grep pattern target -l # Bad `fatal: bad flag '-l' used after filename` git grep -l pattern target # OK
git-gerp
is allow to use options after patterns and filenames.
# use `g(e)rp`, instead of `g(r)ep` git gerp pattern target -l # OK, you can add option '-l' in tail
git-gerp
is replace arguments, and execute git grep
.
Replacement rules:
- Find option arguments (and option’s parameters), move these to ahead.
- Move rest plain arguments to behind.
- If find double-dash
--
, treat after arguments as plain.
- Python 2.6+ or Python 3
Install this package using pip:
pip install git-gerp
and you can run under your repository:
git gerp ...
Define git alias (optional):
# define alias `g` git config --global alias.g gerp
and you can run:
git g ...
git gerp [<git-grep-argument>...]
Examples:
# simple git gerp pattern git gerp pattern path # tail options git gerp pattern path -l -A5 --max-depth 2 # support boolean expressions, and '(', ')' git gerp \( -e pattern1 --and -e pattern2 \) --or -e pattern3 path -l # support '--' git gerp pattern -l -- path1 path2 -i # pathspecs is ['path1', 'path2', '-i']