sparse-checkout: list directories in cone mode
commitde11951b0393500cbf20d3e2bcd2e605d757ea8f
authorDerrick Stolee <dstolee@microsoft.com>
Mon, 30 Dec 2019 15:33:12 +0000 (30 15:33 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 30 Dec 2019 17:07:18 +0000 (30 09:07 -0800)
tree91da2d2cbd25de5a2e5de37b12a84b8ae9d4a45b
parent761e3d26bbe44c51f83c4f1ad198461f57029ebd
sparse-checkout: list directories in cone mode

When core.sparseCheckoutCone is enabled, the 'git sparse-checkout set'
command takes a list of directories as input, then creates an ordered
list of sparse-checkout patterns such that those directories are
recursively included and all sibling entries along the parent directories
are also included. Listing the patterns is less user-friendly than the
directories themselves.

In cone mode, and as long as the patterns match the expected cone-mode
pattern types, change the output of 'git sparse-checkout list' to only
show the directories that created the patterns.

With this change, the following piped commands would not change the
working directory:

git sparse-checkout list | git sparse-checkout set --stdin

The only time this would not work is if core.sparseCheckoutCone is
true, but the sparse-checkout file contains patterns that do not
match the expected pattern types for cone mode.

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