Linus Torvalds | f22cc3f | 2005-09-12 12:06:10 -0700 | [diff] [blame] | 1 | #!/bin/sh |
Linus Torvalds | 5d9d831 | 2005-09-12 16:46:53 -0700 | [diff] [blame] | 2 | # |
| 3 | # Copyright (c) Linus Torvalds, 2005 |
| 4 | # |
| 5 | |
freku045@student.liu.se | 806f36d | 2005-12-13 23:30:31 +0100 | [diff] [blame] | 6 | USAGE='<option>... <pattern> <path>...' |
| 7 | SUBDIRECTORY_OK='Yes' |
| 8 | . git-sh-setup |
| 9 | |
Linus Torvalds | 5d9d831 | 2005-09-12 16:46:53 -0700 | [diff] [blame] | 10 | pattern= |
| 11 | flags=() |
| 12 | git_flags=() |
| 13 | while : ; 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 |
Linus Torvalds | f22cc3f | 2005-09-12 12:06:10 -0700 | [diff] [blame] | 45 | done |
Linus Torvalds | c0c35d5 | 2005-11-16 09:38:46 -0800 | [diff] [blame] | 46 | [ "$pattern" ] || { |
freku045@student.liu.se | 806f36d | 2005-12-13 23:30:31 +0100 | [diff] [blame] | 47 | usage |
Linus Torvalds | c0c35d5 | 2005-11-16 09:38:46 -0800 | [diff] [blame] | 48 | } |
Linus Torvalds | 5d9d831 | 2005-09-12 16:46:53 -0700 | [diff] [blame] | 49 | git-ls-files -z "${git_flags[@]}" "$@" | |
Junio C Hamano | c9fc748 | 2005-09-24 15:09:48 -0700 | [diff] [blame] | 50 | xargs -0 grep "${flags[@]}" -e "$pattern" |