@ -18,7 +18,7 @@ add_upstream_commit() {
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "Fetching submodule submodule" > ../expect.err &&
echo "Fetching submodule submodule" > ../expect.err &&
echo "From $pwd/submodule" >> ../expect.err &&
echo "From $pwd/submodule" >> ../expect.err &&
echo " $head1..$head2 master -> origin/master" >> ../expect.err
echo " $head1..$head2 main -> origin/main" >> ../expect.err
) &&
) &&
(
(
cd deepsubmodule &&
cd deepsubmodule &&
@ -30,7 +30,7 @@ add_upstream_commit() {
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "Fetching submodule submodule/subdir/deepsubmodule" >> ../expect.err
echo "Fetching submodule submodule/subdir/deepsubmodule" >> ../expect.err
echo "From $pwd/deepsubmodule" >> ../expect.err &&
echo "From $pwd/deepsubmodule" >> ../expect.err &&
echo " $head1..$head2 master -> origin/master" >> ../expect.err
echo " $head1..$head2 main -> origin/main" >> ../expect.err
)
)
}
}
@ -61,7 +61,7 @@ test_expect_success setup '
)
)
'
'
test_expect_success "fetch --recurse-submodules recurses into submodules" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "fetch --recurse-submodules recurses into submodules" '
add_upstream_commit &&
add_upstream_commit &&
(
(
cd downstream &&
cd downstream &&
@ -71,7 +71,7 @@ test_expect_success "fetch --recurse-submodules recurses into submodules" '
test_i18ncmp expect.err actual.err
test_i18ncmp expect.err actual.err
'
'
test_expect_success "submodule.recurse option triggers recursive fetch" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "submodule.recurse option triggers recursive fetch" '
add_upstream_commit &&
add_upstream_commit &&
(
(
cd downstream &&
cd downstream &&
@ -81,7 +81,7 @@ test_expect_success "submodule.recurse option triggers recursive fetch" '
test_i18ncmp expect.err actual.err
test_i18ncmp expect.err actual.err
'
'
test_expect_success "fetch --recurse-submodules -j2 has the same output behaviour" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "fetch --recurse-submodules -j2 has the same output behaviour" '
add_upstream_commit &&
add_upstream_commit &&
(
(
cd downstream &&
cd downstream &&
@ -111,7 +111,7 @@ test_expect_success "fetch --no-recurse-submodules only fetches superproject" '
test_must_be_empty actual.err
test_must_be_empty actual.err
'
'
test_expect_success "using fetchRecurseSubmodules=true in .gitmodules recurses into submodules" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "using fetchRecurseSubmodules=true in .gitmodules recurses into submodules" '
(
(
cd downstream &&
cd downstream &&
git config -f .gitmodules submodule.submodule.fetchRecurseSubmodules true &&
git config -f .gitmodules submodule.submodule.fetchRecurseSubmodules true &&
@ -141,7 +141,7 @@ test_expect_success "using fetchRecurseSubmodules=false in .git/config overrides
test_must_be_empty actual.err
test_must_be_empty actual.err
'
'
test_expect_success "--recurse-submodules overrides fetchRecurseSubmodules setting from .git/config" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "--recurse-submodules overrides fetchRecurseSubmodules setting from .git/config" '
(
(
cd downstream &&
cd downstream &&
git fetch --recurse-submodules >../actual.out 2>../actual.err &&
git fetch --recurse-submodules >../actual.out 2>../actual.err &&
@ -170,7 +170,7 @@ test_expect_success "--quiet propagates to parallel submodules" '
test_must_be_empty actual.err
test_must_be_empty actual.err
'
'
test_expect_success "--dry-run propagates to submodules" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "--dry-run propagates to submodules" '
add_upstream_commit &&
add_upstream_commit &&
(
(
cd downstream &&
cd downstream &&
@ -180,7 +180,7 @@ test_expect_success "--dry-run propagates to submodules" '
test_i18ncmp expect.err actual.err
test_i18ncmp expect.err actual.err
'
'
test_expect_success "Without --dry-run propagates to submodules" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "Without --dry-run propagates to submodules" '
(
(
cd downstream &&
cd downstream &&
git fetch --recurse-submodules >../actual.out 2>../actual.err
git fetch --recurse-submodules >../actual.out 2>../actual.err
@ -189,7 +189,7 @@ test_expect_success "Without --dry-run propagates to submodules" '
test_i18ncmp expect.err actual.err
test_i18ncmp expect.err actual.err
'
'
test_expect_success "recurseSubmodules=true propagates into submodules" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "recurseSubmodules=true propagates into submodules" '
add_upstream_commit &&
add_upstream_commit &&
(
(
cd downstream &&
cd downstream &&
@ -200,7 +200,7 @@ test_expect_success "recurseSubmodules=true propagates into submodules" '
test_i18ncmp expect.err actual.err
test_i18ncmp expect.err actual.err
'
'
test_expect_success "--recurse-submodules overrides config in submodule" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "--recurse-submodules overrides config in submodule" '
add_upstream_commit &&
add_upstream_commit &&
(
(
cd downstream &&
cd downstream &&
@ -225,7 +225,7 @@ test_expect_success "--no-recurse-submodules overrides config setting" '
test_must_be_empty actual.err
test_must_be_empty actual.err
'
'
test_expect_success "Recursion doesn't happen when no new commits are fetched in the superproject" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "Recursion doesn't happen when no new commits are fetched in the superproject" '
(
(
cd downstream &&
cd downstream &&
(
(
@ -239,13 +239,13 @@ test_expect_success "Recursion doesn't happen when no new commits are fetched in
test_must_be_empty actual.err
test_must_be_empty actual.err
'
'
test_expect_success "Recursion stops when no new submodule commits are fetched" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "Recursion stops when no new submodule commits are fetched" '
head1=$(git rev-parse --short HEAD) &&
head1=$(git rev-parse --short HEAD) &&
git add submodule &&
git add submodule &&
git commit -m "new submodule" &&
git commit -m "new submodule" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/." > expect.err.sub &&
echo "From $pwd/." > expect.err.sub &&
echo " $head1..$head2 master -> origin/master" >>expect.err.sub &&
echo " $head1..$head2 main -> origin/main" >>expect.err.sub &&
head -3 expect.err >> expect.err.sub &&
head -3 expect.err >> expect.err.sub &&
(
(
cd downstream &&
cd downstream &&
@ -255,7 +255,7 @@ test_expect_success "Recursion stops when no new submodule commits are fetched"
test_must_be_empty actual.out
test_must_be_empty actual.out
'
'
test_expect_success "Recursion doesn't happen when new superproject commits don't change any submodules" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "Recursion doesn't happen when new superproject commits don't change any submodules" '
add_upstream_commit &&
add_upstream_commit &&
head1=$(git rev-parse --short HEAD) &&
head1=$(git rev-parse --short HEAD) &&
echo a > file &&
echo a > file &&
@ -263,7 +263,7 @@ test_expect_success "Recursion doesn't happen when new superproject commits don'
git commit -m "new file" &&
git commit -m "new file" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/." > expect.err.file &&
echo "From $pwd/." > expect.err.file &&
echo " $head1..$head2 master -> origin/master" >> expect.err.file &&
echo " $head1..$head2 main -> origin/main" >> expect.err.file &&
(
(
cd downstream &&
cd downstream &&
git fetch >../actual.out 2>../actual.err
git fetch >../actual.out 2>../actual.err
@ -272,7 +272,7 @@ test_expect_success "Recursion doesn't happen when new superproject commits don'
test_i18ncmp expect.err.file actual.err
test_i18ncmp expect.err.file actual.err
'
'
test_expect_success "Recursion picks up config in submodule" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "Recursion picks up config in submodule" '
(
(
cd downstream &&
cd downstream &&
git fetch --recurse-submodules &&
git fetch --recurse-submodules &&
@ -287,7 +287,7 @@ test_expect_success "Recursion picks up config in submodule" '
git commit -m "new submodule" &&
git commit -m "new submodule" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/." > expect.err.sub &&
echo "From $pwd/." > expect.err.sub &&
echo " $head1..$head2 master -> origin/master" >> expect.err.sub &&
echo " $head1..$head2 main -> origin/main" >> expect.err.sub &&
cat expect.err >> expect.err.sub &&
cat expect.err >> expect.err.sub &&
(
(
cd downstream &&
cd downstream &&
@ -301,7 +301,7 @@ test_expect_success "Recursion picks up config in submodule" '
test_must_be_empty actual.out
test_must_be_empty actual.out
'
'
test_expect_success "Recursion picks up all submodules when necessary" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "Recursion picks up all submodules when necessary" '
add_upstream_commit &&
add_upstream_commit &&
(
(
cd submodule &&
cd submodule &&
@ -316,14 +316,14 @@ test_expect_success "Recursion picks up all submodules when necessary" '
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "Fetching submodule submodule" > ../expect.err.sub &&
echo "Fetching submodule submodule" > ../expect.err.sub &&
echo "From $pwd/submodule" >> ../expect.err.sub &&
echo "From $pwd/submodule" >> ../expect.err.sub &&
echo " $head1..$head2 master -> origin/master" >> ../expect.err.sub
echo " $head1..$head2 main -> origin/main" >> ../expect.err.sub
) &&
) &&
head1=$(git rev-parse --short HEAD) &&
head1=$(git rev-parse --short HEAD) &&
git add submodule &&
git add submodule &&
git commit -m "new submodule" &&
git commit -m "new submodule" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/." > expect.err.2 &&
echo "From $pwd/." > expect.err.2 &&
echo " $head1..$head2 master -> origin/master" >> expect.err.2 &&
echo " $head1..$head2 main -> origin/main" >> expect.err.2 &&
cat expect.err.sub >> expect.err.2 &&
cat expect.err.sub >> expect.err.2 &&
tail -3 expect.err >> expect.err.2 &&
tail -3 expect.err >> expect.err.2 &&
(
(
@ -334,7 +334,7 @@ test_expect_success "Recursion picks up all submodules when necessary" '
test_must_be_empty actual.out
test_must_be_empty actual.out
'
'
test_expect_success "'--recurse-submodules=on-demand' doesn't recurse when no new commits are fetched in the superproject (and ignores config)" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "'--recurse-submodules=on-demand' doesn't recurse when no new commits are fetched in the superproject (and ignores config)" '
add_upstream_commit &&
add_upstream_commit &&
(
(
cd submodule &&
cd submodule &&
@ -349,7 +349,7 @@ test_expect_success "'--recurse-submodules=on-demand' doesn't recurse when no ne
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo Fetching submodule submodule > ../expect.err.sub &&
echo Fetching submodule submodule > ../expect.err.sub &&
echo "From $pwd/submodule" >> ../expect.err.sub &&
echo "From $pwd/submodule" >> ../expect.err.sub &&
echo " $head1..$head2 master -> origin/master" >> ../expect.err.sub
echo " $head1..$head2 main -> origin/main" >> ../expect.err.sub
) &&
) &&
(
(
cd downstream &&
cd downstream &&
@ -361,14 +361,14 @@ test_expect_success "'--recurse-submodules=on-demand' doesn't recurse when no ne
test_must_be_empty actual.err
test_must_be_empty actual.err
'
'
test_expect_success "'--recurse-submodules=on-demand' recurses as deep as necessary (and ignores config)" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "'--recurse-submodules=on-demand' recurses as deep as necessary (and ignores config)" '
head1=$(git rev-parse --short HEAD) &&
head1=$(git rev-parse --short HEAD) &&
git add submodule &&
git add submodule &&
git commit -m "new submodule" &&
git commit -m "new submodule" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
tail -3 expect.err > expect.err.deepsub &&
tail -3 expect.err > expect.err.deepsub &&
echo "From $pwd/." > expect.err &&
echo "From $pwd/." > expect.err &&
echo " $head1..$head2 master -> origin/master" >>expect.err &&
echo " $head1..$head2 main -> origin/main" >>expect.err &&
cat expect.err.sub >> expect.err &&
cat expect.err.sub >> expect.err &&
cat expect.err.deepsub >> expect.err &&
cat expect.err.deepsub >> expect.err &&
(
(
@ -389,7 +389,7 @@ test_expect_success "'--recurse-submodules=on-demand' recurses as deep as necess
test_i18ncmp expect.err actual.err
test_i18ncmp expect.err actual.err
'
'
test_expect_success "'--recurse-submodules=on-demand' stops when no new submodule commits are found in the superproject (and ignores config)" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "'--recurse-submodules=on-demand' stops when no new submodule commits are found in the superproject (and ignores config)" '
add_upstream_commit &&
add_upstream_commit &&
head1=$(git rev-parse --short HEAD) &&
head1=$(git rev-parse --short HEAD) &&
echo a >> file &&
echo a >> file &&
@ -397,7 +397,7 @@ test_expect_success "'--recurse-submodules=on-demand' stops when no new submodul
git commit -m "new file" &&
git commit -m "new file" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/." > expect.err.file &&
echo "From $pwd/." > expect.err.file &&
echo " $head1..$head2 master -> origin/master" >> expect.err.file &&
echo " $head1..$head2 main -> origin/main" >> expect.err.file &&
(
(
cd downstream &&
cd downstream &&
git fetch --recurse-submodules=on-demand >../actual.out 2>../actual.err
git fetch --recurse-submodules=on-demand >../actual.out 2>../actual.err
@ -406,7 +406,7 @@ test_expect_success "'--recurse-submodules=on-demand' stops when no new submodul
test_i18ncmp expect.err.file actual.err
test_i18ncmp expect.err.file actual.err
'
'
test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "'fetch.recurseSubmodules=on-demand' overrides global config" '
(
(
cd downstream &&
cd downstream &&
git fetch --recurse-submodules
git fetch --recurse-submodules
@ -418,7 +418,7 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config
git commit -m "new submodule" &&
git commit -m "new submodule" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/." > expect.err.2 &&
echo "From $pwd/." > expect.err.2 &&
echo " $head1..$head2 master -> origin/master" >>expect.err.2 &&
echo " $head1..$head2 main -> origin/main" >>expect.err.2 &&
head -3 expect.err >> expect.err.2 &&
head -3 expect.err >> expect.err.2 &&
(
(
cd downstream &&
cd downstream &&
@ -434,7 +434,7 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config
test_i18ncmp expect.err.2 actual.err
test_i18ncmp expect.err.2 actual.err
'
'
test_expect_success "'submodule.<sub>.fetchRecurseSubmodules=on-demand' overrides fetch.recurseSubmodules" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "'submodule.<sub>.fetchRecurseSubmodules=on-demand' overrides fetch.recurseSubmodules" '
(
(
cd downstream &&
cd downstream &&
git fetch --recurse-submodules
git fetch --recurse-submodules
@ -446,7 +446,7 @@ test_expect_success "'submodule.<sub>.fetchRecurseSubmodules=on-demand' override
git commit -m "new submodule" &&
git commit -m "new submodule" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/." > expect.err.2 &&
echo "From $pwd/." > expect.err.2 &&
echo " $head1..$head2 master -> origin/master" >>expect.err.2 &&
echo " $head1..$head2 main -> origin/main" >>expect.err.2 &&
head -3 expect.err >> expect.err.2 &&
head -3 expect.err >> expect.err.2 &&
(
(
cd downstream &&
cd downstream &&
@ -462,7 +462,7 @@ test_expect_success "'submodule.<sub>.fetchRecurseSubmodules=on-demand' override
test_i18ncmp expect.err.2 actual.err
test_i18ncmp expect.err.2 actual.err
'
'
test_expect_success "don't fetch submodule when newly recorded commits are already present" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "don't fetch submodule when newly recorded commits are already present" '
(
(
cd submodule &&
cd submodule &&
git checkout -q HEAD^^
git checkout -q HEAD^^
@ -472,7 +472,7 @@ test_expect_success "don't fetch submodule when newly recorded commits are alrea
git commit -m "submodule rewound" &&
git commit -m "submodule rewound" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/." > expect.err &&
echo "From $pwd/." > expect.err &&
echo " $head1..$head2 master -> origin/master" >> expect.err &&
echo " $head1..$head2 main -> origin/main" >> expect.err &&
(
(
cd downstream &&
cd downstream &&
git fetch >../actual.out 2>../actual.err
git fetch >../actual.out 2>../actual.err
@ -485,7 +485,7 @@ test_expect_success "don't fetch submodule when newly recorded commits are alrea
)
)
'
'
test_expect_success "'fetch.recurseSubmodules=on-demand' works also without .gitmodules entry" '
test_expect_success PREPARE_FOR_MAIN_BRANCH "'fetch.recurseSubmodules=on-demand' works also without .gitmodules entry" '
(
(
cd downstream &&
cd downstream &&
git fetch --recurse-submodules
git fetch --recurse-submodules
@ -497,7 +497,7 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' works also without .git
git commit -m "new submodule without .gitmodules" &&
git commit -m "new submodule without .gitmodules" &&
head2=$(git rev-parse --short HEAD) &&
head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/." >expect.err.2 &&
echo "From $pwd/." >expect.err.2 &&
echo " $head1..$head2 master -> origin/master" >>expect.err.2 &&
echo " $head1..$head2 main -> origin/main" >>expect.err.2 &&
head -3 expect.err >>expect.err.2 &&
head -3 expect.err >>expect.err.2 &&
(
(
cd downstream &&
cd downstream &&