Staging
v0.5.1
Revision 0de62e598552765eb674b72bbaf55b2e2933f617 authored by Junio C Hamano on 11 January 2006, 00:20:22 UTC, committed by Junio C Hamano on 11 January 2006, 00:20:22 UTC
2 parent s 8fc11b5 + d5a6aaf
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