Skip to content

Commit

Permalink
sparse-checkout: document interactions with submodules
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
derrickstolee authored and gitster committed Dec 30, 2019
1 parent de11951 commit 4fd683b
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
10 changes: 10 additions & 0 deletions Documentation/git-sparse-checkout.txt
Expand Up @@ -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
--------

Expand Down
28 changes: 28 additions & 0 deletions t/t1091-sparse-checkout-builtin.sh
Expand Up @@ -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

0 comments on commit 4fd683b

Please sign in to comment.