grep: do not unnecessarily query repo for "--"
commitdca3b5f5cef8138e695f87e6cb37fb2063a10ea4
authorJonathan Tan <jonathantanmy@google.com>
Tue, 14 Feb 2017 06:03:03 +0000 (14 01:03 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 14 Feb 2017 19:26:37 +0000 (14 11:26 -0800)
treee179d0e47bfad555b21ee7d73a80c75fd9afb467
parenta0fe2b0d2329d38a08c03427917b21be818bec1f
grep: do not unnecessarily query repo for "--"

When running a command of the form

  git grep --no-index pattern -- path

in the absence of a Git repository, an error message will be printed:

  fatal: BUG: setup_git_env called without repository

This is because "git grep" tries to interpret "--" as a rev. "git grep"
has always tried to first interpret "--" as a rev for at least a few
years, but this issue was upgraded from a pessimization to a bug in
commit 59332d1 ("Resurrect "git grep --no-index"", 2010-02-06), which
calls get_sha1 regardless of whether --no-index was specified. This bug
appeared to be benign until commit b1ef400 ("setup_git_env: avoid blind
fall-back to ".git"", 2016-10-20) when Git was taught to die in this
situation.  (This "git grep" bug appears to be one of the bugs that
commit b1ef400 is meant to flush out.)

Therefore, always interpret "--" as signaling the end of options,
instead of trying to interpret it as a rev first.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/grep.c
t/t7810-grep.sh