git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[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
Previous: Junio C HamanoNext: Derrick Stolee via GitGitGadget
Message 14 of 18 in “sparse-checkout: list directories in cone mode”
  1. 0/1 sparse-checkout: list directories in cone modeDerrick Stolee via GitGitGadget, Dec 26, 2019
  2. 1/1 sparse-checkout: list folders in cone modeDerrick Stolee via GitGitGadget, Dec 26, 2019
  3. Junio C HamanoDec 26, 2019
  4. Derrick StoleeDec 27, 2019
  5. Elijah NewrenDec 27, 2019
  6. 0/2 sparse-checkout: list directories in cone modeDerrick Stolee via GitGitGadget, Dec 27, 2019
  7. 1/2 sparse-checkout: list folders in cone modeDerrick Stolee via GitGitGadget, Dec 27, 2019
  8. Elijah NewrenDec 27, 2019
  9. 2/2 sparse-checkout: document interactions with submodulesDerrick Stolee via GitGitGadget, Dec 27, 2019
  10. Eric SunshineDec 27, 2019
  11. Derrick StoleeDec 30, 2019
  12. Elijah NewrenDec 27, 2019
  13. Junio C HamanoDec 27, 2019
  14. 0/2 sparse-checkout: list directories in cone modeDerrick Stolee via GitGitGadget, Dec 30, 2019
  15. 1/2 sparse-checkout: list directories in cone modeDerrick Stolee via GitGitGadget, Dec 30, 2019
  16. 2/2 sparse-checkout: document interactions with submodulesDerrick Stolee via GitGitGadget, Dec 30, 2019
  17. Elijah NewrenDec 30, 2019
  18. Elijah NewrenDec 27, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.