git/t/t5617-clone-submodules-remote.sh
Ben Avison 4c6910163a clone: add --remote-submodules flag
When using `git clone --recurse-submodules` there was previously no way to
pass a `--remote` switch to the implicit `git submodule update` command for
any use case where you want the submodules to be checked out on their
remote-tracking branch rather than with the SHA-1 recorded in the superproject.

This patch rectifies this situation. It actually passes `--no-fetch` to
`git submodule update` as well on the grounds they the submodule has only just
been cloned, so fetching from the remote again only serves to slow things down.

Signed-off-by: Ben Avison <bavison@riscosopen.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-05-28 09:22:02 -07:00

54 lines
1.2 KiB
Bash
Executable file

#!/bin/sh
test_description='Test cloning repos with submodules using remote-tracking branches'
. ./test-lib.sh
pwd=$(pwd)
test_expect_success 'setup' '
git checkout -b master &&
test_commit commit1 &&
mkdir sub &&
(
cd sub &&
git init &&
test_commit subcommit1 &&
git tag sub_when_added_to_super
) &&
git submodule add "file://$pwd/sub" sub &&
git commit -m "add submodule" &&
(
cd sub &&
test_commit subcommit2
)
'
test_expect_success 'clone with --no-remote-submodules' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules --no-remote-submodules "file://$pwd/." super_clone &&
(
cd super_clone/sub &&
git diff --exit-code sub_when_added_to_super
)
'
test_expect_success 'clone with --remote-submodules' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules --remote-submodules "file://$pwd/." super_clone &&
(
cd super_clone/sub &&
git diff --exit-code remotes/origin/master
)
'
test_expect_success 'check the default is --no-remote-submodules' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules "file://$pwd/." super_clone &&
(
cd super_clone/sub &&
git diff --exit-code sub_when_added_to_super
)
'
test_done