]>
Commit | Line | Data |
---|---|---|
f22cc3fc | 1 | #!/bin/sh |
5d9d831a LT |
2 | # |
3 | # Copyright (c) Linus Torvalds, 2005 | |
4 | # | |
5 | ||
5b2bcc7b | 6 | USAGE='[<option>...] [-e] <pattern> [<path>...]' |
806f36d4 FK |
7 | SUBDIRECTORY_OK='Yes' |
8 | . git-sh-setup | |
9 | ||
5b2bcc7b JH |
10 | got_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 | ||
19 | no_more_patterns= | |
5d9d831a LT |
20 | pattern= |
21 | flags=() | |
22 | git_flags=() | |
23 | while : ; 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 | 57 | done |
c0c35d5e | 58 | [ "$pattern" ] || { |
806f36d4 | 59 | usage |
c0c35d5e | 60 | } |
5b2bcc7b JH |
61 | git-ls-files -z "${git_flags[@]}" -- "$@" | |
62 | xargs -0 grep "${flags[@]}" -e "$pattern" -- |