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

Re: [PATCH v3 6/6] worktree: copy sparse-checkout patterns and config on add

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Dec 30, 2021, 08:16 UTC
Message-ID
<CAPig+cRVePM7AtoMc=czDPqZed=VQqKGUBKCBpYA0QQm18cofg@mail.gmail.com>
In-Reply-To
<CABPp-BFdVPRgFy8DLFEB13Trh5J4S+xma-U5FUnUvQLNMfNNjA@mail.gmail.com>
On Wed, Dec 29, 2021 at 5:45 PM Elijah Newren <newren@gmail.com> wrote:
Show 28 quoted lines
> On Wed, Dec 29, 2021 at 1:39 PM Derrick Stolee <stolee@gmail.com> wrote:
> > I think the motivation is that worktree config is something that is
> > harder to set up than to just run a 'git config' command, and we
> > should guide users into a best practice for using it. The
> > documentation becomes "run this command to enable it".
>
> Okay, but that's an answer to a different question -- namely, "if
> users want/need to explicitly set it up, why should we have a
> command?"  Your answer here is a very good answer to that question,
> but you've assumed the "if".  My question was on the "if": (Why) Do
> users need or want to explicitly set it up?
>
> Secondarily, if users want to set it up explicitly, is the work here
> really sufficient to help guide them?  In particular, I discovered and
> started using extensions.worktreeConfig without ever looking at the
> relevant portions of git-worktree.txt (the references in
> git-config.txt never mentioned them).  I also pushed this usage to
> others, including even to you with `git-sparse-checkout`, and no
> reviewer on this list ever caught it or informed me of the `proper`
> additional guidelines found in git-worktree.txt until this thread
> started.  So, relying on folks to read git-worktree.txt for this
> config item feels a bit weak to me.  Granted, your new command will be
> much more likely to be read since it appears near the top of
> git-worktree.txt, but I just don't think that's enough.  The
> references to extensions.worktreeConfig in git-config.txt should
> reference any special command or extended steps if we expect users to
> manually configure it (whether via explicit new subcommand or via also
> playing with other config settings).

Agreed about it being a good idea to update git-config.txt to mention the extra bookkeeping related to `extensions.worktreeConfig=1` (though it doesn't necessarily need to be done by this series).

Show 9 quoted lines
> Anyway, if we think users want to set it up explicitly, and we address
> the discoverability problem above, then I'd vote for
> "independent-config" or "private-config" (or _maybe_
> "migrate-config").  Because:
>   * no sense repeating the word `worktree` in `git worktree
> init-worktree-config`.  It's redundant.
>   * The words "independent" or "private" suggest what it does and why
> users might want to use the new subcommand.
>   * It's not an "init":

I had some similar thoughts/objections to the name `init-worktree-config` (not that I was able to come up with anything better). Thanks for enumerating them here. Anyhow, as you say below, the new subcommand isn't really needed.

>     * The documentation makes no attempt to impose a temporal order of
> using this command before `git worktree add`.  (Would we even want
> to?)

Aside from possible(?) sparse-checkout issues, I don't think there is a reason to impose temporal order in general.

Show 6 quoted lines
>     * As per my recommendation elsewhere, this step just isn't needed
> for the vast majority of users (i.e. those with non-bare clones who
> leave core.worktree alone).
>     * ...and it's also not needed for other (core.bare=true or
> core.worktree set) users since `git worktree add` will automatically
> run this config migration for them

Your enumeration at the very end of [1] pretty well convinced me that we don't need this command; certainly not at present, and perhaps never.

> And, actually, with the name "independent-config" or "private-config",
> I might be answering my own question.  It's a name that speaks to why
> users might want it, so my objection to the new command is rapidly
> diminishing.

Perhaps some day it might make sense to add such a subcommand (more suitably named), but with your proposal in [1] it's hard to justify adding it now, and it certainly doesn't need to be part of this patch series.

[1]: https://lore.kernel.org/git/CABPp-BHuO3B366uJuODMQo-y449p8cAMVn0g2MTcO5di3Xa7Zg@mail.gmail.com/
Previous: Elijah NewrenNext: Eric Sunshine
Message 61 of 138 in “Sparse checkout: fix bug with worktree of bare repo”
  1. 0/4 Sparse checkout: fix bug with worktree of bare repoDerrick Stolee via GitGitGadget, Dec 20, 2021
  2. 1/4 setup: use a repository when upgrading formatDerrick Stolee via GitGitGadget, Dec 20, 2021
  3. 2/4 config: make some helpers repo-awareDerrick Stolee via GitGitGadget, Dec 20, 2021
  4. 3/4 config: add repo_config_set_worktree_gently()Derrick Stolee via GitGitGadget, Dec 20, 2021
  5. Derrick StoleeDec 20, 2021
  6. Eric SunshineDec 21, 2021
  7. Eric SunshineDec 21, 2021
  8. Derrick StoleeDec 21, 2021
  9. Eric SunshineDec 21, 2021
  10. Derrick StoleeDec 21, 2021
  11. Eric SunshineDec 21, 2021
  12. 4/4 sparse-checkout: use repo_config_set_worktree_gently()Derrick Stolee via GitGitGadget, Dec 20, 2021
  13. Eric SunshineDec 20, 2021
  14. Derrick StoleeDec 20, 2021
  15. Eric SunshineDec 21, 2021
  16. 0/5 Sparse checkout: fix bug with worktree of bare repoDerrick Stolee via GitGitGadget, Dec 21, 2021
  17. 1/5 setup: use a repository when upgrading formatDerrick Stolee via GitGitGadget, Dec 21, 2021
  18. 2/5 config: make some helpers repo-awareDerrick Stolee via GitGitGadget, Dec 21, 2021
  19. 3/5 worktree: add upgrade_to_worktree_config()Derrick Stolee via GitGitGadget, Dec 21, 2021
  20. Eric SunshineDec 22, 2021
  21. Derrick StoleeDec 28, 2021
  22. Eric SunshineDec 28, 2021
  23. Derrick StoleeDec 28, 2021
  24. Junio C HamanoDec 22, 2021
  25. Derrick StoleeDec 28, 2021
  26. 4/5 config: add repo_config_set_worktree_gently()Derrick Stolee via GitGitGadget, Dec 21, 2021
  27. Eric SunshineDec 22, 2021
  28. 5/5 sparse-checkout: use repo_config_set_worktree_gently()Derrick Stolee via GitGitGadget, Dec 21, 2021
  29. Eric SunshineDec 22, 2021
  30. Eric SunshineDec 22, 2021
  31. Elijah NewrenDec 22, 2021
  32. Eric SunshineDec 27, 2021
  33. Eric SunshineDec 27, 2021
  34. Elijah NewrenDec 27, 2021
  35. Eric SunshineDec 28, 2021
  36. Eric SunshineDec 30, 2021
  37. Elijah NewrenDec 30, 2021
  38. Elijah NewrenDec 27, 2021
  39. Eric SunshineDec 28, 2021
  40. Elijah NewrenDec 28, 2021
  41. Eric SunshineDec 30, 2021
  42. Elijah NewrenDec 30, 2021
  43. Eric SunshineJan 3, 2022
  44. 0/6 Sparse checkout: fix bug with worktree of bare repoDerrick Stolee via GitGitGadget, Dec 28, 2021
  45. 1/6 setup: use a repository when upgrading formatDerrick Stolee via GitGitGadget, Dec 28, 2021
  46. 2/6 config: make some helpers repo-awareDerrick Stolee via GitGitGadget, Dec 28, 2021
  47. 3/6 worktree: add 'init-worktree-config' subcommandDerrick Stolee via GitGitGadget, Dec 28, 2021
  48. Eric SunshineDec 29, 2021
  49. Eric SunshineDec 30, 2021
  50. Derrick StoleeDec 30, 2021
  51. Eric SunshineJan 3, 2022
  52. 4/6 config: add repo_config_set_worktree_gently()Derrick Stolee via GitGitGadget, Dec 28, 2021
  53. 5/6 sparse-checkout: use repo_config_set_worktree_gently()Derrick Stolee via GitGitGadget, Dec 28, 2021
  54. Eric SunshineDec 30, 2021
  55. 6/6 worktree: copy sparse-checkout patterns and config on addDerrick Stolee via GitGitGadget, Dec 28, 2021
  56. Eric SunshineDec 29, 2021
  57. Derrick StoleeDec 29, 2021
  58. Elijah NewrenDec 29, 2021
  59. Derrick StoleeDec 29, 2021
  60. Elijah NewrenDec 29, 2021
  61. Eric SunshineDec 30, 2021
  62. Eric SunshineDec 30, 2021
  63. Elijah NewrenDec 29, 2021
  64. Derrick StoleeDec 29, 2021
  65. Eric SunshineDec 30, 2021
  66. Eric SunshineDec 30, 2021
  67. Derrick StoleeDec 30, 2021
  68. Elijah NewrenDec 30, 2021
  69. Eric SunshineJan 3, 2022
  70. Elijah NewrenDec 30, 2021
  71. 0/5 Sparse checkout: fix bug with worktree of bare repoDerrick Stolee via GitGitGadget, Jan 25, 2022
  72. 2/5 worktree: create init_worktree_config()Derrick Stolee via GitGitGadget, Jan 25, 2022
  73. Elijah NewrenJan 27, 2022
  74. 3/5 config: add repo_config_set_worktree_gently()Derrick Stolee via GitGitGadget, Jan 25, 2022
  75. 1/5 Documentation: add extensions.worktreeConfig detailsDerrick Stolee via GitGitGadget, Jan 25, 2022
  76. Bagas SanjayaJan 26, 2022
  77. Derrick StoleeJan 27, 2022
  78. Elijah NewrenJan 27, 2022
  79. Derrick StoleeJan 27, 2022
  80. 4/5 sparse-checkout: set worktree-config correctlyDerrick Stolee via GitGitGadget, Jan 25, 2022
  81. Elijah NewrenJan 27, 2022
  82. Derrick StoleeJan 27, 2022
  83. 5/5 worktree: copy sparse-checkout patterns and config on addDerrick Stolee via GitGitGadget, Jan 25, 2022
  84. Elijah NewrenJan 27, 2022
  85. Elijah NewrenJan 27, 2022
  86. Derrick StoleeJan 27, 2022
  87. 0/5 Sparse checkout: fix bug with worktree of bare repoDerrick Stolee via GitGitGadget, Jan 31, 2022
  88. 1/5 Documentation: add extensions.worktreeConfig detailsDerrick Stolee via GitGitGadget, Jan 31, 2022
  89. Eric SunshineFeb 6, 2022
  90. 2/5 worktree: create init_worktree_config()Derrick Stolee via GitGitGadget, Jan 31, 2022
  91. Eric SunshineFeb 6, 2022
  92. 3/5 config: add repo_config_set_worktree_gently()Derrick Stolee via GitGitGadget, Jan 31, 2022
  93. 4/5 sparse-checkout: set worktree-config correctlyDerrick Stolee via GitGitGadget, Jan 31, 2022
  94. Eric SunshineFeb 6, 2022
  95. 5/5 worktree: copy sparse-checkout patterns and config on addDerrick Stolee via GitGitGadget, Jan 31, 2022
  96. Jean-Noël AVILAFeb 6, 2022
  97. Derrick StoleeFeb 7, 2022
  98. Jean-Noël AvilaFeb 9, 2022
  99. Derrick StoleeFeb 9, 2022
  100. Eric SunshineFeb 6, 2022
  101. Eric SunshineFeb 6, 2022
  102. Derrick StoleeFeb 7, 2022
  103. Eric SunshineFeb 15, 2022
  104. Derrick StoleeFeb 16, 2022
  105. Elijah NewrenJan 31, 2022
  106. 0/6 Sparse checkout: fix bug with worktree of bare repoDerrick Stolee via GitGitGadget, Feb 7, 2022
  107. 1/6 Documentation: add extensions.worktreeConfig detailsDerrick Stolee via GitGitGadget, Feb 7, 2022
  108. Junio C HamanoFeb 8, 2022
  109. Derrick StoleeFeb 9, 2022
  110. Junio C HamanoFeb 9, 2022
  111. Derrick StoleeFeb 9, 2022
  112. Elijah NewrenFeb 9, 2022
  113. Junio C HamanoFeb 9, 2022
  114. Eric SunshineFeb 15, 2022
  115. Junio C HamanoFeb 16, 2022
  116. Elijah NewrenFeb 9, 2022
  117. Junio C HamanoFeb 9, 2022
  118. 2/6 worktree: create init_worktree_config()Derrick Stolee via GitGitGadget, Feb 7, 2022
  119. Junio C HamanoFeb 8, 2022
  120. Derrick StoleeFeb 9, 2022
  121. Junio C HamanoFeb 9, 2022
  122. Elijah NewrenFeb 9, 2022
  123. 3/6 config: add repo_config_set_worktree_gently()Derrick Stolee via GitGitGadget, Feb 7, 2022
  124. Junio C HamanoFeb 8, 2022
  125. Derrick StoleeFeb 9, 2022
  126. Junio C HamanoFeb 9, 2022
  127. Derrick StoleeFeb 10, 2022
  128. Junio C HamanoFeb 10, 2022
  129. 4/6 sparse-checkout: set worktree-config correctlyDerrick Stolee via GitGitGadget, Feb 7, 2022
  130. 5/6 worktree: copy sparse-checkout patterns and config on addDerrick Stolee via GitGitGadget, Feb 7, 2022
  131. Eric SunshineFeb 15, 2022
  132. 6/6 config: make git_configset_get_string_tmp() privateDerrick Stolee via GitGitGadget, Feb 7, 2022
  133. Elijah NewrenFeb 8, 2022
  134. Eric SunshineFeb 8, 2022
  135. Elijah NewrenFeb 8, 2022
  136. Eric SunshineFeb 8, 2022
  137. Eric SunshineFeb 16, 2022
  138. Derrick StoleeFeb 8, 2022

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.