]> git.ipfire.org Git - thirdparty/git.git/blame - git-grep.sh
Update git-unpack-objects documentation.
[thirdparty/git.git] / git-grep.sh
CommitLineData
f22cc3fc 1#!/bin/sh
5d9d831a
LT
2#
3# Copyright (c) Linus Torvalds, 2005
4#
5
5b2bcc7b 6USAGE='[<option>...] [-e] <pattern> [<path>...]'
806f36d4
FK
7SUBDIRECTORY_OK='Yes'
8. git-sh-setup
9
5b2bcc7b
JH
10got_pattern () {
11 if [ -z "$no_more_patterns" ]
12 then
13 pattern="$1" no_more_patterns=yes
14 else
15 die "git-grep: do not specify more than one pattern"
16 fi
17}
18
19no_more_patterns=
5d9d831a
LT
20pattern=
21flags=()
22git_flags=()
23while : ; do
24 case "$1" in
5b2bcc7b
JH
25 -o|--cached|--deleted|--others|--killed|\
26 --ignored|--modified|--exclude=*|\
5d9d831a
LT
27 --exclude-from=*|\--exclude-per-directory=*)
28 git_flags=("${git_flags[@]}" "$1")
29 ;;
30 -e)
5b2bcc7b 31 got_pattern "$2"
5d9d831a
LT
32 shift
33 ;;
34 -A|-B|-C|-D|-d|-f|-m)
35 flags=("${flags[@]}" "$1" "$2")
36 shift
37 ;;
38 --)
5b2bcc7b 39 # The rest are git-ls-files paths
5d9d831a
LT
40 shift
41 break
42 ;;
43 -*)
44 flags=("${flags[@]}" "$1")
45 ;;
46 *)
5b2bcc7b
JH
47 if [ -z "$no_more_patterns" ]
48 then
49 got_pattern "$1"
5d9d831a
LT
50 shift
51 fi
5b2bcc7b 52 [ "$1" = -- ] && shift
5d9d831a
LT
53 break
54 ;;
55 esac
56 shift
f22cc3fc 57done
c0c35d5e 58[ "$pattern" ] || {
806f36d4 59 usage
c0c35d5e 60}
5b2bcc7b
JH
61git-ls-files -z "${git_flags[@]}" -- "$@" |
62 xargs -0 grep "${flags[@]}" -e "$pattern" --