]> git.ipfire.org Git - thirdparty/git.git/blame - git-grep.sh
tar-tree: finish honoring extractor's umask in git-tar-tree.
[thirdparty/git.git] / git-grep.sh
CommitLineData
f22cc3fc 1#!/bin/sh
5d9d831a
LT
2#
3# Copyright (c) Linus Torvalds, 2005
4#
5
806f36d4
FK
6USAGE='<option>... <pattern> <path>...'
7SUBDIRECTORY_OK='Yes'
8. git-sh-setup
9
5d9d831a
LT
10pattern=
11flags=()
12git_flags=()
13while : ; do
14 case "$1" in
15 --cached|--deleted|--others|--killed|\
16 --ignored|--exclude=*|\
17 --exclude-from=*|\--exclude-per-directory=*)
18 git_flags=("${git_flags[@]}" "$1")
19 ;;
20 -e)
21 pattern="$2"
22 shift
23 ;;
24 -A|-B|-C|-D|-d|-f|-m)
25 flags=("${flags[@]}" "$1" "$2")
26 shift
27 ;;
28 --)
29 # The rest are git-ls-files paths (or flags)
30 shift
31 break
32 ;;
33 -*)
34 flags=("${flags[@]}" "$1")
35 ;;
36 *)
37 if [ -z "$pattern" ]; then
38 pattern="$1"
39 shift
40 fi
41 break
42 ;;
43 esac
44 shift
f22cc3fc 45done
c0c35d5e 46[ "$pattern" ] || {
806f36d4 47 usage
c0c35d5e 48}
5d9d831a 49git-ls-files -z "${git_flags[@]}" "$@" |
c9fc748f 50 xargs -0 grep "${flags[@]}" -e "$pattern"