diff --git a/builtin/grep.c b/builtin/grep.c index e83b33bdaa..c4c6325941 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -1176,6 +1176,12 @@ int cmd_grep(int argc, const char **argv, const char *prefix) break; } + if (!use_index) { + if (seen_dashdash) + die(_("--no-index cannot be used with revs")); + break; + } + if (get_sha1_with_context(arg, 0, sha1, &oc)) { if (seen_dashdash) die(_("unable to resolve revision: %s"), arg); diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh index a6011f9b1d..c051c7ee80 100755 --- a/t/t7810-grep.sh +++ b/t/t7810-grep.sh @@ -1030,6 +1030,19 @@ test_expect_success 'grep --no-index pattern -- path' ' ) ' +test_expect_success 'grep --no-index complains of revs' ' + test_must_fail git grep --no-index o master -- 2>err && + test_i18ngrep "no-index cannot be used with revs" err +' + +test_expect_success 'grep --no-index prefers paths to revs' ' + test_when_finished "rm -f master" && + echo content >master && + echo master:content >expect && + git grep --no-index o master >actual && + test_cmp expect actual +' + cat >expected <