Skip to content

sparse-checkout: list directories in cone mode

Derrick Stolee via GitGitGadget git 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest2 patches 1 replyIn review
  2. v22 patches 5 repliesSuperseded
  3. v11 patch 4 repliesSuperseded

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/2sparse-checkout: list directories in cone modeDocumentation/git-sparse-checkout.txt builtin/sparse-checkout.c t/t1091-sparse-checkout-builtin.sh+42 -10 replies
2/2sparse-checkout: document interactions with submodulesDocumentation/git-sparse-checkout.txt t/t1091-sparse-checkout-builtin.sh+38 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.

Read the v3 thread

Cover letter [PATCH v3 0/2] sparse-checkout: list directories in cone mode

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 <[email protected]>

- 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
Signature · 1 line
gitgitgadget