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

Re: [PATCH v5 2/3] branch: Mark and color a branch differently if it is checked out in a linked worktree

From
Nickolai Belakovski <nbelakovski@gmail.com>
Date
Jan 13, 2019, 01:41 UTC
Message-ID
<CAC05384uh_xRboFhxohRq-vKFrTPDnszSaS3vW+BAv30h-Zd+g@mail.gmail.com>
In-Reply-To
<e313d0b1-54b1-9fe2-6c75-d2ae7b57fe3a@iee.org>
On Thu, Jan 10, 2019 at 1:43 PM Philip Oakley <philipoakley@iee.org> wrote:
Show 11 quoted lines
>
> On 07/01/2019 19:04, Junio C Hamano wrote:
> > I do not think it is warranted to paint the safety features as
> > "limitations".
>
> Is this not just a case of needing to clarify that this is 'safety'
> related to the _users_ mental model (or lack of) relative to the limited
> information that was previously given by the branch command's list.
>
> You are right that there is no data safety issue, but users make
> mistakes when they misunderstand the situation.

Not trying to paint anything one way or another. I found that these features got in the way of my workflows and didn't see any immediate reason why they had to exist. Thinking about it a bit more, is it unreasonable to delete a branch even if it's checked out in a worktree as long as the user uses git branch --delete --force or -D? This would leave the worktree in a detached head state, but all the data would be untouched. The output of deletion could mention that the branch had been checked out in a worktree so that the user is fully informed.

Checking out the same branch in two worktrees should be technically possible to implement safely, but I don't see a use case for having the same branch checked out in multiple worktrees anyway. Why use multiple worktrees at that point? If a user really wants the same contents in two directories they can work around this limitation/safety feature by just making another branch pointing at the same commit. But anyway I'm just explaining why I chose the word 'limitation'.

Show 5 quoted lines
> >    If you do want to remove that branch,
> > you need to go to that worktree that has a checkout of that branch,
> > check out a different branch there, and then remove it.  Again,
> > knowing where that other worktree is is the fist thing you need to
> > know.

This just seems silly to me when git branch --delete has a --force option. But that's off topic.

Show 23 quoted lines
> >
> >> The git worktree list command contains the relevant information, however
> >> this is a much less frquently used command than git branch.
> > It is not a good justification.  If the "relevant information" given
> > by the command is necessary one, the user can run that command.  If
> > the situation where that "relevant information" becomes necessary is
> > rare, the command is run much less frequently is not a problem---it
> > is expected.  And overloading a more frequently used command with
> > information that is less frequently wanted is actually not a great
> > design.
> But leaving the older command unaware of the newer developments and the
> user unwise as to its missing info is equally a poor situation.
> >
> > A more relevant justification may be that even though the
> > information can already be found in "worktree list" output, it would
> > give us flexibility in presentation to allow the custom format in
> > for-each-ref to show it.
> >
> > So, I am between moderately Meh to fairly negative on this step; Meh
> > in the sense that "thanks to the previous step, we _could_ do this,
> > it does not give incorrect information, and it makes the output more
> > cheerful, but it does not add that much useful and actionable piece
> > of information".

Allow me to add some color to my original commit message. The point of this patch is so that the user is not surprised when they see the message that this branch is checked out in another worktree when trying to delete it or check it out, since they have presumably run git branch recently and seen the formatted output indicating that a branch they may want to delete/checkout is checked out in a worktree. This was my frustration that prompted me to dive into this in the first place - I'm cleaning up my branches and all of a sudden git decides it doesn't want to let me delete one because it's checked out somewhere else, even though I know I don't care about it because I know the branch has already been merged upstream, or is old, or whatever. I thought, if git branch output could at least let me know that it's going to treat some branches differently, I can be proactive about things and go to my worktree and delete the branch, or skip trying to clean it up or not check it out.

I'll pursue the above-mentioned topic of allowing git branch -D to allow the user to delete branches checked out in a worktree separately, but even if that goes through, I think this patch would still be useful in that it tells me that I can't check out the branches that are colored in cyan.

Does that make more sense?
Previous: Philip OakleyNext: Junio C Hamano
Message 58 of 125 in “branch: colorize branches checked out in a linked working tree the same way as the current branch is colorized”
  1. branch: colorize branches checked out in a linked working tree the same way as the current branch is colorizedNickolai Belakovski, Sep 27, 2018
  2. Ævar Arnfjörð BjarmasonSep 27, 2018
  3. Nickolai BelakovskiSep 27, 2018
  4. Duy NguyenSep 27, 2018
  5. Jeff KingSep 27, 2018
  6. Nickolai BelakovskiSep 27, 2018
  7. Jeff KingSep 27, 2018
  8. Rafael AscensãoSep 27, 2018
  9. Jeff KingSep 27, 2018
  10. Jeff KingSep 27, 2018
  11. Junio C HamanoSep 27, 2018
  12. Jeff KingSep 28, 2018
  13. Junio C HamanoSep 28, 2018
  14. Rafael AscensãoSep 27, 2018
  15. Jeff KingSep 28, 2018
  16. Ævar Arnfjörð BjarmasonSep 27, 2018
  17. Nickolai BelakovskiSep 27, 2018
  18. Rafael AscensãoSep 27, 2018
  19. 0/2 refactoring branch colorization to ref-filternbelakovski@gmail.com, Nov 11, 2018
  20. 1/2 ref-filter: add worktree atomnbelakovski@gmail.com, Nov 11, 2018
  21. Junio C HamanoNov 12, 2018
  22. Jeff KingNov 12, 2018
  23. Junio C HamanoNov 13, 2018
  24. Nickolai BelakovskiNov 21, 2018
  25. Jeff KingNov 21, 2018
  26. Jeff KingNov 12, 2018
  27. 2/2 branch: Mark and colorize a branch differently if it is checked out in a linked worktreenbelakovski@gmail.com, Nov 11, 2018
  28. Junio C HamanoNov 12, 2018
  29. Jeff KingNov 12, 2018
  30. Rafael AscensãoNov 12, 2018
  31. Junio C HamanoNov 13, 2018
  32. Jeff KingNov 13, 2018
  33. Nickolai BelakovskiNov 21, 2018
  34. 0/3 nbelakovski@gmail.com, Dec 16, 2018
  35. 1/3 ref-filter: add worktreepath atomnbelakovski@gmail.com, Dec 16, 2018
  36. Jeff KingDec 18, 2018
  37. Nickolai BelakovskiDec 20, 2018
  38. Jeff KingDec 20, 2018
  39. 0/3 nbelakovski@gmail.com, Dec 24, 2018
  40. 1/3 ref-filter: add worktreepath atomnbelakovski@gmail.com, Dec 24, 2018
  41. Jeff KingJan 3, 2019
  42. Eric SunshineJan 3, 2019
  43. 2/3 branch: Mark and color a branch differently if it is checked out in a linked worktreenbelakovski@gmail.com, Dec 24, 2018
  44. 3/3 branch: Add an extra verbose output displaying worktree path for refs checked out in a linked worktreenbelakovski@gmail.com, Dec 24, 2018
  45. Jeff KingJan 3, 2019
  46. Jeff KingJan 3, 2019
  47. 2/3 branch: Mark and color a branch differently if it is checked out in a linked worktreenbelakovski@gmail.com, Dec 16, 2018
  48. 3/3 branch: Add an extra verbose output displaying worktree path for refs checked out in a linked worktreenbelakovski@gmail.com, Dec 16, 2018
  49. Jeff KingDec 18, 2018
  50. 0/3 nbelakovski@gmail.com, Jan 6, 2019
  51. 1/3 ref-filter: add worktreepath atomnbelakovski@gmail.com, Jan 6, 2019
  52. Junio C HamanoJan 7, 2019
  53. Nickolai BelakovskiJan 18, 2019
  54. Nickolai BelakovskiJan 18, 2019
  55. 2/3 branch: Mark and color a branch differently if it is checked out in a linked worktreenbelakovski@gmail.com, Jan 6, 2019
  56. Junio C HamanoJan 7, 2019
  57. Philip OakleyJan 10, 2019
  58. Nickolai BelakovskiJan 13, 2019
  59. Junio C HamanoJan 14, 2019
  60. Nickolai BelakovskiJan 18, 2019
  61. 3/3 branch: Add an extra verbose output displaying worktree path for refs checked out in a linked worktreenbelakovski@gmail.com, Jan 6, 2019
  62. Junio C HamanoJan 7, 2019
  63. 0/3 nbelakovski@gmail.com, Jan 22, 2019
  64. 1/3 ref-filter: add worktreepath atomnbelakovski@gmail.com, Jan 22, 2019
  65. Junio C HamanoJan 23, 2019
  66. Nickolai BelakovskiJan 23, 2019
  67. Junio C HamanoJan 24, 2019
  68. Jeff KingJan 24, 2019
  69. Junio C HamanoJan 24, 2019
  70. Jeff KingJan 24, 2019
  71. Junio C HamanoJan 24, 2019
  72. Jeff KingJan 24, 2019
  73. Nickolai BelakovskiJan 31, 2019
  74. Jeff KingJan 31, 2019
  75. Junio C HamanoJan 31, 2019
  76. Jeff KingJan 31, 2019
  77. 2/3 branch: Mark and color a branch differently if it is checked out in a linked worktreenbelakovski@gmail.com, Jan 22, 2019
  78. 3/3 branch: Add an extra verbose output displaying worktree path for refs checked out in a linked worktreenbelakovski@gmail.com, Jan 22, 2019
  79. 0/3 nbelakovski@gmail.com, Feb 1, 2019
  80. 1/3 ref-filter: add worktreepath atomnbelakovski@gmail.com, Feb 1, 2019
  81. Eric SunshineFeb 1, 2019
  82. Nickolai BelakovskiFeb 1, 2019
  83. Junio C HamanoFeb 4, 2019
  84. Nickolai BelakovskiFeb 18, 2019
  85. Junio C HamanoFeb 1, 2019
  86. 2/3 branch: Mark and color a branch differently if it is checked out in a linked worktreenbelakovski@gmail.com, Feb 1, 2019
  87. Junio C HamanoFeb 1, 2019
  88. Nickolai BelakovskiFeb 1, 2019
  89. Junio C HamanoFeb 4, 2019
  90. 3/3 branch: Add an extra verbose output displaying worktree path for refs checked out in a linked worktreenbelakovski@gmail.com, Feb 1, 2019
  91. Eric SunshineFeb 1, 2019
  92. Nickolai BelakovskiFeb 1, 2019
  93. Junio C HamanoFeb 1, 2019
  94. Nickolai BelakovskiFeb 1, 2019
  95. [RFC] Sample of test for git branch -vvnbelakovski@gmail.com, Feb 2, 2019
  96. Junio C HamanoFeb 1, 2019
  97. Nickolai BelakovskiFeb 1, 2019
  98. 0/3 nbelakovski@gmail.com, Feb 19, 2019
  99. 1/3 ref-filter: add worktreepath atomnbelakovski@gmail.com, Feb 19, 2019
  100. 2/3 branch: update output to include worktree infonbelakovski@gmail.com, Feb 19, 2019
  101. Jeff KingFeb 21, 2019
  102. Nickolai BelakovskiMar 14, 2019
  103. 3/3 branch: add worktree info on verbose outputnbelakovski@gmail.com, Feb 19, 2019
  104. Jeff KingFeb 21, 2019
  105. Nickolai BelakovskiMar 14, 2019
  106. Junio C HamanoMar 18, 2019
  107. Jeff KingFeb 21, 2019
  108. Nickolai BelakovskiMar 14, 2019
  109. 0/3 nbelakovski@gmail.com, Mar 16, 2019
  110. 1/3 ref-filter: add worktreepath atomnbelakovski@gmail.com, Mar 16, 2019
  111. 2/3 branch: update output to include worktree infonbelakovski@gmail.com, Mar 16, 2019
  112. 3/3 branch: add worktree info on verbose outputnbelakovski@gmail.com, Mar 16, 2019
  113. SZEDER GáborMar 18, 2019
  114. Junio C HamanoMar 18, 2019
  115. 0/3 nbelakovski@gmail.com, Apr 29, 2019
  116. 1/3 ref-filter: add worktreepath atomnbelakovski@gmail.com, Apr 29, 2019
  117. 2/3 branch: update output to include worktree infonbelakovski@gmail.com, Apr 29, 2019
  118. 3/3 branch: add worktree info on verbose outputnbelakovski@gmail.com, Apr 29, 2019
  119. SZEDER GáborApr 29, 2019
  120. Nickolai BelakovskiApr 29, 2019
  121. Johannes SchindelinApr 29, 2019
  122. Nickolai BelakovskiApr 29, 2019
  123. Ævar Arnfjörð BjarmasonSep 27, 2018
  124. Johannes SchindelinOct 2, 2018
  125. Johannes SchindelinApr 30, 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.