🌐 AI搜索 & 代理 主页
blob: ad4f2fe81046505c43684e8c26f0eeaac6cc6146 [file] [log] [blame]
Linus Torvaldsf22cc3f2005-09-12 19:06:101#!/bin/sh
Linus Torvalds5d9d8312005-09-12 23:46:532#
3# Copyright (c) Linus Torvalds, 2005
4#
5
Junio C Hamano5b2bcc72006-01-20 23:00:126USAGE='[<option>...] [-e] <pattern> [<path>...]'
freku045@student.liu.se806f36d2005-12-13 22:30:317SUBDIRECTORY_OK='Yes'
8. git-sh-setup
9
Junio C Hamano5b2bcc72006-01-20 23:00:1210got_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=
Linus Torvalds5d9d8312005-09-12 23:46:5320pattern=
21flags=()
22git_flags=()
23while : ; do
24 case "$1" in
Junio C Hamano5b2bcc72006-01-20 23:00:1225 -o|--cached|--deleted|--others|--killed|\
26 --ignored|--modified|--exclude=*|\
Linus Torvalds5d9d8312005-09-12 23:46:5327 --exclude-from=*|\--exclude-per-directory=*)
28 git_flags=("${git_flags[@]}" "$1")
29 ;;
30 -e)
Junio C Hamano5b2bcc72006-01-20 23:00:1231 got_pattern "$2"
Linus Torvalds5d9d8312005-09-12 23:46:5332 shift
33 ;;
34 -A|-B|-C|-D|-d|-f|-m)
35 flags=("${flags[@]}" "$1" "$2")
36 shift
37 ;;
38 --)
Junio C Hamano5b2bcc72006-01-20 23:00:1239 # The rest are git-ls-files paths
Linus Torvalds5d9d8312005-09-12 23:46:5340 shift
41 break
42 ;;
43 -*)
44 flags=("${flags[@]}" "$1")
45 ;;
46 *)
Junio C Hamano5b2bcc72006-01-20 23:00:1247 if [ -z "$no_more_patterns" ]
48 then
49 got_pattern "$1"
Linus Torvalds5d9d8312005-09-12 23:46:5350 shift
51 fi
Junio C Hamano5b2bcc72006-01-20 23:00:1252 [ "$1" = -- ] && shift
Linus Torvalds5d9d8312005-09-12 23:46:5353 break
54 ;;
55 esac
56 shift
Linus Torvaldsf22cc3f2005-09-12 19:06:1057done
Linus Torvaldsc0c35d52005-11-16 17:38:4658[ "$pattern" ] || {
freku045@student.liu.se806f36d2005-12-13 22:30:3159 usage
Linus Torvaldsc0c35d52005-11-16 17:38:4660}
Junio C Hamano5b2bcc72006-01-20 23:00:1261git-ls-files -z "${git_flags[@]}" -- "$@" |
62 xargs -0 grep "${flags[@]}" -e "$pattern" --