git-grep.shon commit Merge fixes up to GIT 1.0.4 (2414721)
   1#!/bin/sh
   2#
   3# Copyright (c) Linus Torvalds, 2005
   4#
   5
   6USAGE='<option>... <pattern> <path>...'
   7SUBDIRECTORY_OK='Yes'
   8. git-sh-setup
   9
  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
  45done
  46[ "$pattern" ] || {
  47        usage
  48}
  49git-ls-files -z "${git_flags[@]}" "$@" |
  50        xargs -0 grep "${flags[@]}" -e "$pattern"