]> git.ipfire.org Git - thirdparty/git.git/commitdiff
sparse-checkout: document interactions with submodules
authorDerrick Stolee <dstolee@microsoft.com>
Mon, 30 Dec 2019 15:33:13 +0000 (15:33 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 30 Dec 2019 17:07:20 +0000 (09:07 -0800)
Using 'git submodule (init|deinit)' a user can select a subset of
submodules to populate. This behaves very similar to the sparse-checkout
feature, but those directories contain their own .git directory
including an object database and ref space. To have the sparse-checkout
file also determine if those files should exist would easily cause
problems. Therefore, keeping these features independent in this way
is the best way forward.

Also create a test that demonstrates this behavior to make sure
it doesn't change as the sparse-checkout feature evolves.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-sparse-checkout.txt
t/t1091-sparse-checkout-builtin.sh

index 67be5247b97a7baff0c7e486982c6678f97626c8..3b341cf0fce3c173d9b953e82dd5f3b0453f5603 100644 (file)
@@ -164,6 +164,16 @@ case-insensitive check. This corrects for case mismatched filenames in the
 'git sparse-checkout set' command to reflect the expected cone in the working
 directory.
 
+
+SUBMODULES
+----------
+
+If your repository contains one or more submodules, then those submodules will
+appear based on which you initialized with the `git submodule` command. If
+your sparse-checkout patterns exclude an initialized submodule, then that
+submodule will still appear in your working directory.
+
+
 SEE ALSO
 --------
 
index 37f6d8fa908445109a83e802cdb80fb6c2c60a3e..ff7f8f7a1fac6674286233b43c63d62cfcef448f 100755 (executable)
@@ -340,4 +340,32 @@ test_expect_success 'cone mode: set with core.ignoreCase=true' '
        test_cmp expect dir
 '
 
+test_expect_success 'interaction with submodules' '
+       git clone repo super &&
+       (
+               cd super &&
+               mkdir modules &&
+               git submodule add ../repo modules/child &&
+               git add . &&
+               git commit -m "add submodule" &&
+               git sparse-checkout init --cone &&
+               git sparse-checkout set folder1
+       ) &&
+       list_files super >dir &&
+       cat >expect <<-\EOF &&
+               a
+               folder1
+               modules
+       EOF
+       test_cmp expect dir &&
+       list_files super/modules/child >dir &&
+       cat >expect <<-\EOF &&
+               a
+               deep
+               folder1
+               folder2
+       EOF
+       test_cmp expect dir
+'
+
 test_done