git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Improve "git grep" flags handling

From
Linus Torvalds <torvalds@osdl.org>
Date
Sep 12, 2005, 23:46 UTC
Message-ID
<Pine.LNX.4.58.0509121635060.3266@g5.osdl.org>
In-Reply-To
<7vslw96f6j.fsf@assigned-by-dhcp.cox.net>
On Mon, 12 Sep 2005, Junio C Hamano wrote:
> 
> Yeah, let's see how tolerant your barf-o-meter is today.

I'm not barfing, but that's probably because my brain just shut down and is desperately trying to gouge my eyes out with a spoon.

Wouldn't it be _much_ nicer to just do
	pattern=
	flags=()
	git_flags=()
	while : ; do
		case "$1" in
		--cached|--deleted|--others|--killed|\
		--ignored|--exclude=*|\
		--exclude-from=*|\--exclude-per-directory=*)
			git_flags=("${git_flags[@]}" "$1")
			;;
		-e)
			pattern="$2"
			shift
			;;
		-A|-B|-C|-D|-d|-f|-m)
			flags=("${flags[@]}" "$1" "$2")
			shift
			;;
		--)
			shift
			break
			;;
		-*)
			flags=("${flags[@]}" "$1")
			;;
		*)
			if [ -z "$pattern" ]; then
				pattern="$1"
				shift
			fi
			break
			;;
		esac
		shift
	done
	git-ls-files -z "${git_flags[@]}" | 
		xargs -0 grep "${flags[@]}" "$pattern"

which does use bash array variables, but dang, it does so for a reason: they really are very very useful, and they make it _so_ much more pleasant to do these things..

		Linus
Previous: Junio C HamanoNext: Junio C Hamano
Message 10 of 13 in “Add "git grep" helper”
  1. Linus TorvaldsSep 12, 2005
  2. Morten WelinderSep 12, 2005
  3. Linus TorvaldsSep 12, 2005
  4. Junio C HamanoSep 12, 2005
  5. Linus TorvaldsSep 12, 2005
  6. Improve "git grep" flags handlingLinus Torvalds, Sep 12, 2005
  7. Junio C HamanoSep 12, 2005
  8. Linus TorvaldsSep 12, 2005
  9. Junio C HamanoSep 12, 2005
  10. Linus TorvaldsSep 12, 2005
  11. Junio C HamanoSep 12, 2005
  12. Improve "git grep" flags handlingJunio C Hamano, Sep 13, 2005
  13. Junio C HamanoSep 12, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.