Skip to content

Commit

Permalink
fetch: fix --no-recurse-submodules with multi-remote fetches
Browse files Browse the repository at this point in the history
When running `git fetch --no-recurse-submodules`, the exectation is that
we don't fetch any submodules. And while this works for fetches of a
single remote, it doesn't when fetching multiple remotes at once. The
result is that we do recurse into submodules even though the user has
explicitly asked us not to.

This is because while we pass on `--recurse-submodules={yes,on-demand}`
if specified by the user, we don't pass on `--no-recurse-submodules` to
the subprocess spawned to perform the submodule fetch.

Fix this by also forwarding this flag as expected.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
pks-t authored and gitster committed May 10, 2023
1 parent 667fcf4 commit 5667141
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
2 changes: 2 additions & 0 deletions builtin/fetch.c
Expand Up @@ -1879,6 +1879,8 @@ static void add_options_to_argv(struct strvec *argv)
strvec_push(argv, "--keep");
if (recurse_submodules == RECURSE_SUBMODULES_ON)
strvec_push(argv, "--recurse-submodules");
else if (recurse_submodules == RECURSE_SUBMODULES_OFF)
strvec_push(argv, "--no-recurse-submodules");
else if (recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND)
strvec_push(argv, "--recurse-submodules=on-demand");
if (tags == TAGS_SET)
Expand Down
13 changes: 13 additions & 0 deletions t/t5526-fetch-submodules.sh
Expand Up @@ -1180,4 +1180,17 @@ test_expect_success 'fetch --all with --recurse-submodules with multiple' '
test_line_count = 2 fetch-subs
'

test_expect_success "fetch --all with --no-recurse-submodules only fetches superproject" '
test_when_finished "rm -rf src_clone" &&
git clone --recurse-submodules src src_clone &&
(
cd src_clone &&
git remote add secondary ../src &&
git config submodule.recurse true &&
git fetch --all --no-recurse-submodules 2>../fetch-log
) &&
! grep "Fetching submodule" fetch-log
'

test_done

0 comments on commit 5667141

Please sign in to comment.