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

Re: [PATCH v3 07/10] sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}

From
Elijah Newren <newren@gmail.com>
Date
Dec 14, 2021, 02:39 UTC
Message-ID
<CABPp-BGq5-_84=hXqpxg5A7syauXYK_MBzgSY989d3KmR4rn-g@mail.gmail.com>
In-Reply-To
<xmqq1r2ge53u.fsf@gitster.g>
On Mon, Dec 13, 2021 at 10:23 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 14 quoted lines
>
> "Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
> > From: Elijah Newren <newren@gmail.com>
> >
> > Folks may want to switch to or from cone mode, or to or from a
> > sparse-index without changing their sparsity paths.  Allow them to do so
> > using the reapply command.
>
> Interesting.
>
> Are there certain pattern that would make sense only in one of the
> modes but not the other?  If there isn't any such pattern, this
> feature perfectly makes sense, I would think.
Good question.

Valid cone mode patterns are a strict subset of the possible sparsity patterns. So, switching from cone to non-cone mode trivially makes sense. Understanding why switching in the other direction is okay takes a bit more understanding...

Stolee designed cone mode such that when it's active, and someone edits .git/info/sparse-checkout and adds patterns of their own (which users might do because that had been suggested for several years in the read-tree docs -- and still is), then the code will print a warning ("disabling cone pattern matching") and operate in non-cone mode. As such, the sparsity does not "break" when they switch modes if they have non-cone patterns; they'll just get warnings.

Further, we're making `reapply` consistent with `init` here. Stolee made `init` usable for switching modes in an active sparse-checkout (though it wasn't well documented, and it's slightly confusing to users who might worry that they'll lose their sparsity patterns by using `init`). We're just copying that ability from `init` over in `reapply`, and recommending using the latter rather than the former.

Show 5 quoted lines
> If an existing pattern changes its meaning between the old mode and
> the new mode, that is very much fine---that is what the user wanted
> to achieve by switching between the modes with "reapply".
>
> Thanks.
Previous: Junio C HamanoNext: Elijah Newren via GitGitGadget
Message 44 of 63 in “sparse-checkout: make set subsume init”
  1. 0/6 sparse-checkout: make set subsume initElijah Newren via GitGitGadget, Dec 4, 2021
  2. 1/6 sparse-checkout: pass use_stdin as a parameter instead of as a globalElijah Newren via GitGitGadget, Dec 4, 2021
  3. 2/6 sparse-checkout: break apart functions for sparse_checkout_(set|add)Elijah Newren via GitGitGadget, Dec 4, 2021
  4. 3/6 sparse-checkout: enable `set` to initialize sparse-checkout modeElijah Newren via GitGitGadget, Dec 4, 2021
  5. Victoria DyeDec 4, 2021
  6. Elijah NewrenDec 7, 2021
  7. Lessley DenningtonDec 7, 2021
  8. Derrick StoleeDec 7, 2021
  9. Elijah NewrenDec 7, 2021
  10. 4/6 git-sparse-checkout.txt: update to document that set handles initElijah Newren via GitGitGadget, Dec 4, 2021
  11. Victoria DyeDec 4, 2021
  12. Derrick StoleeDec 7, 2021
  13. Elijah NewrenDec 7, 2021
  14. Lessley DenningtonDec 7, 2021
  15. Elijah NewrenDec 7, 2021
  16. Lessley DenningtonDec 7, 2021
  17. 5/6 Documentation: clarify/correct a few sparsity related statementsElijah Newren via GitGitGadget, Dec 4, 2021
  18. 6/6 clone: avoid using deprecated `sparse-checkout init`Elijah Newren via GitGitGadget, Dec 4, 2021
  19. Derrick StoleeDec 7, 2021
  20. 00/10 sparse-checkout: make set subsume initElijah Newren via GitGitGadget, Dec 7, 2021
  21. 01/10 sparse-checkout: pass use_stdin as a parameter instead of as a globalElijah Newren via GitGitGadget, Dec 7, 2021
  22. 02/10 sparse-checkout: break apart functions for sparse_checkout_(set|add)Elijah Newren via GitGitGadget, Dec 7, 2021
  23. 03/10 sparse-checkout: add sanity-checks on initial sparsity stateElijah Newren via GitGitGadget, Dec 7, 2021
  24. 04/10 sparse-checkout: disallow --no-stdin as an argument to setElijah Newren via GitGitGadget, Dec 7, 2021
  25. 05/10 sparse-checkout: split out code for tweaking settings configElijah Newren via GitGitGadget, Dec 7, 2021
  26. 06/10 sparse-checkout: enable `set` to initialize sparse-checkout modeElijah Newren via GitGitGadget, Dec 7, 2021
  27. 07/10 sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}Elijah Newren via GitGitGadget, Dec 7, 2021
  28. 08/10 git-sparse-checkout.txt: update to document init/set/reapply changesElijah Newren via GitGitGadget, Dec 7, 2021
  29. 09/10 Documentation: clarify/correct a few sparsity related statementsElijah Newren via GitGitGadget, Dec 7, 2021
  30. 10/10 clone: avoid using deprecated `sparse-checkout init`Elijah Newren via GitGitGadget, Dec 7, 2021
  31. Derrick StoleeDec 7, 2021
  32. Victoria DyeDec 8, 2021
  33. 00/10 sparse-checkout: make set subsume initElijah Newren via GitGitGadget, Dec 10, 2021
  34. 01/10 sparse-checkout: pass use_stdin as a parameter instead of as a globalElijah Newren via GitGitGadget, Dec 10, 2021
  35. 02/10 sparse-checkout: break apart functions for sparse_checkout_(set|add)Elijah Newren via GitGitGadget, Dec 10, 2021
  36. 03/10 sparse-checkout: add sanity-checks on initial sparsity stateElijah Newren via GitGitGadget, Dec 10, 2021
  37. Junio C HamanoDec 13, 2021
  38. Elijah NewrenDec 14, 2021
  39. 04/10 sparse-checkout: disallow --no-stdin as an argument to setElijah Newren via GitGitGadget, Dec 10, 2021
  40. 06/10 sparse-checkout: enable `set` to initialize sparse-checkout modeElijah Newren via GitGitGadget, Dec 10, 2021
  41. 05/10 sparse-checkout: split out code for tweaking settings configElijah Newren via GitGitGadget, Dec 10, 2021
  42. 07/10 sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}Elijah Newren via GitGitGadget, Dec 10, 2021
  43. Junio C HamanoDec 13, 2021
  44. Elijah NewrenDec 14, 2021
  45. 08/10 git-sparse-checkout.txt: update to document init/set/reapply changesElijah Newren via GitGitGadget, Dec 10, 2021
  46. 09/10 Documentation: clarify/correct a few sparsity related statementsElijah Newren via GitGitGadget, Dec 10, 2021
  47. 10/10 clone: avoid using deprecated `sparse-checkout init`Elijah Newren via GitGitGadget, Dec 10, 2021
  48. 00/10 sparse-checkout: make set subsume initElijah Newren via GitGitGadget, Dec 14, 2021
  49. 01/10 sparse-checkout: pass use_stdin as a parameter instead of as a globalElijah Newren via GitGitGadget, Dec 14, 2021
  50. 02/10 sparse-checkout: break apart functions for sparse_checkout_(set|add)Elijah Newren via GitGitGadget, Dec 14, 2021
  51. 03/10 sparse-checkout: add sanity-checks on initial sparsity stateElijah Newren via GitGitGadget, Dec 14, 2021
  52. 04/10 sparse-checkout: disallow --no-stdin as an argument to setElijah Newren via GitGitGadget, Dec 14, 2021
  53. 05/10 sparse-checkout: split out code for tweaking settings configElijah Newren via GitGitGadget, Dec 14, 2021
  54. 07/10 sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}Elijah Newren via GitGitGadget, Dec 14, 2021
  55. Jiang XinDec 23, 2021
  56. Elijah NewrenDec 23, 2021
  57. Junio C HamanoDec 23, 2021
  58. 09/10 Documentation: clarify/correct a few sparsity related statementsElijah Newren via GitGitGadget, Dec 14, 2021
  59. Bagas SanjayaDec 14, 2021
  60. Elijah NewrenDec 14, 2021
  61. 08/10 git-sparse-checkout.txt: update to document init/set/reapply changesElijah Newren via GitGitGadget, Dec 14, 2021
  62. 06/10 sparse-checkout: enable `set` to initialize sparse-checkout modeElijah Newren via GitGitGadget, Dec 14, 2021
  63. 10/10 clone: avoid using deprecated `sparse-checkout init`Elijah Newren via GitGitGadget, Dec 14, 2021

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.