Thread (10 messages) 10 messages, 4 authors, 2024-10-04

Re: "git worktree repair" modifies the wrong repository

From: Russell Stuart <hidden>
Date: 2024-09-25 09:31:48

Sorry, I missed this reply.

On 24/9/24 04:52, Eric Sunshine wrote:
[1]: The discussion begins at the "Also Eric" paragraph of this email
and continues in emails following it:
https://lore.kernel.org/git/CACsJy8CXEKG+WNdSPOWF7JDzPXidSRWZZ5zkdMW3N3Dg8SGW_Q@mail.gmail.com/ (local)
Yes, Duh's comments pretty much sums it up.
This intuition perhaps arises from your background with "hg", but I
have not formed any such intuition.
Not only from hg.  You can freely move the parent directory of all CVS 
systems I'm aware of - hg, svn, cvs, rcs, sccs and yes git too.  It only 
breaks when you add worktrees to git.
That's a very restrictive and limiting organization. As I understand
it, one of the design goals of Git's linked worktrees was to allow
worktrees to be placed anywhere, including on removable media or
not-always-mounted network drives. (Yes, you may be able to do
something similar with "hg" and symbolic links, but that doesn't play
well with Windows users, at least not in the era when Git's worktree
support was implemented.)
Yes, it is far more restrictive than git worktrees are now.  It 
simplifies the users the mental model of what is going on, but that 
simplification comes at a cost.  I only mentioned it because relative 
paths in worktrees would allow you to pretend it works that way.
Can you provide more details about this "mangling"? Although the
use-case you describe was not directly considered in the initial
design, worktrees hanging off a bare repository became an
explicitly-supported use-case not long after worktrees were
introduced. So, it should work properly and we know that people use
worktrees this way, but we haven't had any reports of mangling in this
scenario.
Phillip's reply was spot on: 
https://lore.kernel.org/git/87afa860-52f4-414a-82da-09e7eeac1301@gmail.com/ (local)
By the way, have you seen the patch recently posted[3] to explicitly
support relative paths for worktrees?

[3]: https://lore.kernel.org/git/pull.1783.git.git.1726880551891.gitgitgadget@gmail.com/ (local)
Ahh, now I see why using both is attractive
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help