#!/bin/sh # # Copyright (c) Linus Torvalds, 2005 # USAGE='[<option>...] [-e] <pattern> [<path>...]' SUBDIRECTORY_OK='Yes' . git-sh-setup got_pattern () { if [ -z "$no_more_patterns" ] then pattern="$1" no_more_patterns=yes else die "git-grep: do not specify more than one pattern" fi } no_more_patterns= pattern= flags=() git_flags=() while : ; do case "$1" in -o|--cached|--deleted|--others|--killed|\ --ignored|--modified|--exclude=*|\ --exclude-from=*|\--exclude-per-directory=*) git_flags=("${git_flags[@]}" "$1") ;; -e) got_pattern "$2" shift ;; -A|-B|-C|-D|-d|-f|-m) flags=("${flags[@]}" "$1" "$2") shift ;; --) # The rest are git-ls-files paths shift break ;; -*) flags=("${flags[@]}" "$1") ;; *) if [ -z "$no_more_patterns" ] then got_pattern "$1" shift fi [ "$1" = -- ] && shift break ;; esac shift done [ "$pattern" ] || { usage } git-ls-files -z "${git_flags[@]}" -- "$@" | xargs -0 grep "${flags[@]}" -e "$pattern" --