Daniel Black <daniel@xxxxxxxxxxx> writes: > The code fetches the submodules remote based on the superproject remote name > instead of the submodule remote name[1]. > > Instead of grabbing the default remote of the superproject repository, ask > the default remote of the submodule we are going to run 'git fetch' in. > > 1. https://lore.kernel.org/git/ZJR5SPDj4Wt_gmRO@pweza/ > > Signed-off-by: Daniel Black <daniel@xxxxxxxxxxx> > --- > builtin/submodule--helper.c | 9 ++++++++- > t/t5572-pull-submodule.sh | 20 ++++++++++++++++++++ > 2 files changed, 28 insertions(+), 1 deletion(-) Excellent. Will queue. Thanks. > diff --git a/t/t5572-pull-submodule.sh b/t/t5572-pull-submodule.sh > index 916e58c166..9b6cf8d88b 100755 > --- a/t/t5572-pull-submodule.sh > +++ b/t/t5572-pull-submodule.sh > @@ -230,6 +230,7 @@ test_expect_success 'branch has no merge base with remote-tracking counterpart' > > test_create_repo a-submodule && > test_commit -C a-submodule foo && > + test_commit -C a-submodule bar && > > test_create_repo parent && > git -C parent submodule add "$(pwd)/a-submodule" && > @@ -246,4 +247,23 @@ test_expect_success 'branch has no merge base with remote-tracking counterpart' > git -C child pull --recurse-submodules --rebase > ' > > +test_expect_success 'fetch submodule remote of different name from superproject' ' > + git -C child remote rename origin o1 && > + git -C child submodule update --init && > + > + # Needs to create unreachable commit from current master branch. > + git -C a-submodule checkout -b newmain HEAD^ && > + test_commit -C a-submodule echo && > + test_commit -C a-submodule moreecho && > + subc=$(git -C a-submodule rev-parse --short HEAD) && > + > + git -C parent/a-submodule fetch && > + git -C parent/a-submodule checkout "$subc" && > + git -C parent commit -m "update submodule" a-submodule && > + git -C a-submodule reset --hard HEAD^^ && > + > + git -C child pull --no-recurse-submodules && > + git -C child submodule update > +' > + > test_done