builtin/checkout: add --recurse-submodules switch
This exposes a flag to recurse into submodules in builtin/checkout making use of the code implemented in prior patches. A new failure mode is introduced in the submodule update library, as the directory/submodule conflict is not solved in prior patches. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
6d14eac3ec
commit
1fc458d958
@ -782,6 +782,16 @@ test_submodule_forced_switch () {
|
||||
|
||||
test_submodule_switch_recursing () {
|
||||
command="$1"
|
||||
RESULTDS=success
|
||||
if test "$KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS" = 1
|
||||
then
|
||||
RESULTDS=failure
|
||||
fi
|
||||
RESULTR=success
|
||||
if test "$KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED" = 1
|
||||
then
|
||||
RESULTR=failure
|
||||
fi
|
||||
######################### Appearing submodule #########################
|
||||
# Switching to a commit letting a submodule appear checks it out ...
|
||||
test_expect_success "$command: added submodule is checked out" '
|
||||
@ -891,7 +901,7 @@ test_submodule_switch_recursing () {
|
||||
'
|
||||
# Replacing a submodule with files in a directory must succeeds
|
||||
# when the submodule is clean
|
||||
test_expect_success "$command: replace submodule with a directory" '
|
||||
test_expect_$RESULTDS "$command: replace submodule with a directory" '
|
||||
prolog &&
|
||||
reset_work_tree_to_interested add_sub1 &&
|
||||
(
|
||||
@ -903,7 +913,7 @@ test_submodule_switch_recursing () {
|
||||
)
|
||||
'
|
||||
# ... absorbing a .git directory.
|
||||
test_expect_success "$command: replace submodule containing a .git directory with a directory must absorb the git dir" '
|
||||
test_expect_$RESULTDS "$command: replace submodule containing a .git directory with a directory must absorb the git dir" '
|
||||
prolog &&
|
||||
reset_work_tree_to_interested add_sub1 &&
|
||||
(
|
||||
@ -931,7 +941,7 @@ test_submodule_switch_recursing () {
|
||||
'
|
||||
|
||||
# ... must check its local work tree for untracked files
|
||||
test_expect_success "$command: replace submodule with a file must fail with untracked files" '
|
||||
test_expect_$RESULTDS "$command: replace submodule with a file must fail with untracked files" '
|
||||
prolog &&
|
||||
reset_work_tree_to_interested add_sub1 &&
|
||||
(
|
||||
@ -987,7 +997,8 @@ test_submodule_switch_recursing () {
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success "$command: modified submodule updates submodule recursively" '
|
||||
# recursing deeper than one level doesn't work yet.
|
||||
test_expect_$RESULTR "$command: modified submodule updates submodule recursively" '
|
||||
prolog &&
|
||||
reset_work_tree_to_interested add_nested_sub &&
|
||||
(
|
||||
@ -1006,6 +1017,11 @@ test_submodule_switch_recursing () {
|
||||
# the superproject as well as the submodule is allowed.
|
||||
test_submodule_forced_switch_recursing () {
|
||||
command="$1"
|
||||
RESULT=success
|
||||
if test "$KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS" = 1
|
||||
then
|
||||
RESULT=failure
|
||||
fi
|
||||
######################### Appearing submodule #########################
|
||||
# Switching to a commit letting a submodule appear creates empty dir ...
|
||||
test_expect_success "$command: added submodule is checked out" '
|
||||
@ -1151,7 +1167,7 @@ test_submodule_forced_switch_recursing () {
|
||||
'
|
||||
|
||||
# ... but stops for untracked files that would be lost
|
||||
test_expect_success "$command: replace submodule with a file" '
|
||||
test_expect_$RESULT "$command: replace submodule with a file stops for untracked files" '
|
||||
prolog &&
|
||||
reset_work_tree_to_interested add_sub1 &&
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user