[PATCH v3 0/2] sparse-checkout: list directories in cone mode
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Dec 30, 2019, 15:33 UTC
- Message-ID
- <pull.500.v3.git.1577719993.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.500.v2.git.1577472469.gitgitgadget@gmail.com>
When in cone mode, "git sparse-checkout set" takes a list of folders and constructs an ordered list of patterns for the sparse-checkout file. The "git sparse-checkout list" subcommand outputs the contents of the sparse-checkout file in a very basic way.
This patch changes the behavior of "git sparse-checkout list" when core.sparseCheckoutCone=true. It will output the folders that were used in "git sparse-checkout set" to create the patterns, instead of the patterns themselves.
I believe this was requested in the initial review, but I cannot find that message now.
I was going to include this as part of a longer follow-up series, but I think this may be worth considering for the 2.25.0 release. Hence, it is included by itself.
Update in V2:
* Fixed typos/word choice in commit message. * Added a second commit including clarification on interactions with submodules.
Thanks, -Stolee
Derrick Stolee (2): sparse-checkout: list directories in cone mode sparse-checkout: document interactions with submodules
Documentation/git-sparse-checkout.txt | 21 ++++++++++++++- builtin/sparse-checkout.c | 21 +++++++++++++++ t/t1091-sparse-checkout-builtin.sh | 39 +++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 1 deletion(-)
base-commit: 761e3d26bbe44c51f83c4f1ad198461f57029ebd Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-500%2Fderrickstolee%2Fsparse-checkout-list-v3 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-500/derrickstolee/sparse-checkout-list-v3 Pull-Request: https://github.com/gitgitgadget/git/pull/500
Range-diff vs v2:
1: d6f4f40486 ! 1: 7d4295bd06 sparse-checkout: list folders in cone mode
@@ -1,17 +1,17 @@
Author: Derrick Stolee <dstolee@microsoft.com>
- sparse-checkout: list folders in cone mode
+ sparse-checkout: list directories in cone mode
When core.sparseCheckoutCone is enabled, the 'git sparse-checkout set'
- command takes a list of folders as input, then creates an ordered
- list of sparse-checkout patterns such that those folders are
- recursively included and all sibling entries along the parent folders
+ 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
- folders themselves.
+ 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 folders that created the patterns.
+ show the directories that created the patterns.
With this change, the following piped commands would not change the
working directory:
@@ -41,8 +41,8 @@
based algorithms to compute inclusion in the sparse-checkout.
+In the cone mode case, the `git sparse-checkout list` subcommand will list the
-+folders that define the recursive patterns. For the example sparse-checkout file
-+above, the output is as follows:
++directories that define the recursive patterns. For the example sparse-checkout
++file above, the output is as follows:
+
+--------------------------
+$ git sparse-checkout list
2: 331bb7d6fb ! 2: 74bbd0f84d sparse-checkout: document interactions with submodules
@@ -2,11 +2,6 @@
sparse-checkout: document interactions with submodules
- Junio asked what the behavior is between the sparse-checkout feature
- and the submodule feature. The sparse-checkout builtin has not changed
- the way these features interact, but we may as well document it in
- the builtin docs.
-
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
@@ -61,14 +56,14 @@
+ git sparse-checkout set folder1
+ ) &&
+ list_files super >dir &&
-+ cat >expect <<-EOF &&
++ cat >expect <<-\EOF &&
+ a
+ folder1
+ modules
+ EOF
+ test_cmp expect dir &&
+ list_files super/modules/child >dir &&
-+ cat >expect <<-EOF &&
++ cat >expect <<-\EOF &&
+ a
+ deep
+ folder1-- gitgitgadget