Staging
v0.5.1
Revision 5a2282de13c4da13f979185e652c8a08e2481fd1 authored by Junio C Hamano on 08 January 2006, 22:22:19 UTC, committed by Junio C Hamano on 08 January 2006, 22:22:19 UTC
2 parent s e77f489 + 8fc11b5
Raw File
git-grep.sh
#!/bin/sh
#
# Copyright (c) Linus Torvalds, 2005
#

USAGE='<option>... <pattern> <path>...'
SUBDIRECTORY_OK='Yes'
. git-sh-setup

pattern=
flags=()
git_flags=()
while : ; do
	case "$1" in
	--cached|--deleted|--others|--killed|\
	--ignored|--exclude=*|\
	--exclude-from=*|\--exclude-per-directory=*)
		git_flags=("${git_flags[@]}" "$1")
		;;
	-e)
		pattern="$2"
		shift
		;;
	-A|-B|-C|-D|-d|-f|-m)
		flags=("${flags[@]}" "$1" "$2")
		shift
		;;
	--)
		# The rest are git-ls-files paths (or flags)
		shift
		break
		;;
	-*)
		flags=("${flags[@]}" "$1")
		;;
	*)
		if [ -z "$pattern" ]; then
			pattern="$1"
			shift
		fi
		break
		;;
	esac
	shift
done
[ "$pattern" ] || {
	usage
}
git-ls-files -z "${git_flags[@]}" "$@" |
	xargs -0 grep "${flags[@]}" -e "$pattern"
back to top