Merge branch 'sb/submodule-blanket-recursive'

Many commands learned to pay attention to submodule.recurse
configuration.

* sb/submodule-blanket-recursive:
  builtin/fetch.c: respect 'submodule.recurse' option
  builtin/push.c: respect 'submodule.recurse' option
  builtin/grep.c: respect 'submodule.recurse' option
  Introduce 'submodule.recurse' option for worktree manipulators
  submodule loading: separate code path for .gitmodules and config overlay
  reset/checkout/read-tree: unify config callback for submodule recursion
  submodule test invocation: only pass additional arguments
  submodule recursing: do not write a config variable twice
This commit is contained in:
Junio C Hamano
2017-06-13 13:47:07 -07:00
16 changed files with 179 additions and 98 deletions

View File

@ -781,8 +781,9 @@ test_submodule_forced_switch () {
# - Removing a submodule with a git directory absorbs the submodules
# git directory first into the superproject.
test_submodule_switch_recursing () {
command="$1"
test_submodule_switch_recursing_with_args () {
cmd_args="$1"
command="git $cmd_args --recurse-submodules"
RESULTDS=success
if test "$KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS" = 1
then
@ -984,6 +985,18 @@ test_submodule_switch_recursing () {
)
'
test_expect_success "git -c submodule.recurse=true $cmd_args: modified submodule updates submodule work tree" '
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
git -c submodule.recurse=true $cmd_args modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1
)
'
# Updating a submodule to an invalid sha1 doesn't update the
# superproject nor the submodule's work tree.
test_expect_success "$command: updating to a missing submodule commit fails" '
@ -1016,8 +1029,9 @@ test_submodule_switch_recursing () {
# Test that submodule contents are updated when switching between commits
# that change a submodule, but throwing away local changes in
# the superproject as well as the submodule is allowed.
test_submodule_forced_switch_recursing () {
command="$1"
test_submodule_forced_switch_recursing_with_args () {
cmd_args="$1"
command="git $cmd_args --recurse-submodules"
RESULT=success
if test "$KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS" = 1
then