Merge branch 'pb/do-not-recurse-grep-no-index'

"git grep --no-index" should not get affected by the contents of
the .gitmodules file but when "--recurse-submodules" is given or
the "submodule.recurse" variable is set, it did.  Now these
settings are ignored in the "--no-index" mode.

* pb/do-not-recurse-grep-no-index:
  grep: ignore --recurse-submodules if --no-index is given
This commit is contained in:
Junio C Hamano 2020-02-12 12:41:36 -08:00
commit 556ccd4dd2
3 changed files with 17 additions and 4 deletions

View File

@ -96,7 +96,8 @@ OPTIONS
Recursively search in each submodule that has been initialized and Recursively search in each submodule that has been initialized and
checked out in the repository. When used in combination with the checked out in the repository. When used in combination with the
<tree> option the prefix of all submodule output will be the name of <tree> option the prefix of all submodule output will be the name of
the parent project's <tree> object. the parent project's <tree> object. This option has no effect
if `--no-index` is given.
-a:: -a::
--text:: --text::

View File

@ -958,6 +958,9 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
/* die the same way as if we did it at the beginning */ /* die the same way as if we did it at the beginning */
setup_git_directory(); setup_git_directory();
} }
/* Ignore --recurse-submodules if --no-index is given or implied */
if (!use_index)
recurse_submodules = 0;
/* /*
* skip a -- separator; we know it cannot be * skip a -- separator; we know it cannot be
@ -1115,8 +1118,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
} }
} }
if (recurse_submodules && (!use_index || untracked)) if (recurse_submodules && untracked)
die(_("option not supported with --recurse-submodules")); die(_("--untracked not supported with --recurse-submodules"));
if (!show_in_pager && !opt.status_only) if (!show_in_pager && !opt.status_only)
setup_pager(); setup_pager();

View File

@ -345,7 +345,16 @@ test_incompatible_with_recurse_submodules ()
} }
test_incompatible_with_recurse_submodules --untracked test_incompatible_with_recurse_submodules --untracked
test_incompatible_with_recurse_submodules --no-index
test_expect_success 'grep --recurse-submodules --no-index ignores --recurse-submodules' '
git grep --recurse-submodules --no-index -e "^(.|.)[\d]" >actual &&
cat >expect <<-\EOF &&
a:(1|2)d(3|4)
submodule/a:(1|2)d(3|4)
submodule/sub/a:(1|2)d(3|4)
EOF
test_cmp expect actual
'
test_expect_success 'grep --recurse-submodules should pass the pattern type along' ' test_expect_success 'grep --recurse-submodules should pass the pattern type along' '
# Fixed # Fixed