←back to thread

128 points nvader | 2 comments | | HN request time: 0.001s | source
Show context
rafaelmn ◴[] No.46190591[source]
So how is this different from git worktrees exactly ?
replies(2): >>46190753 #>>46191208 #
weinzierl ◴[] No.46191208[source]
In git you can have only one worktree per branch. For example, if you have a worktree on main you cannot have another one on main.

I personally find this annoying. I usually like to keep one pristine and always current working copy of main (and develop if applicable) around for search and other analysis tasks[1]. Worktrees would be ideal and efficient but due to the mentioned restriction I have to either waste space for a separate clone or do some ugly workarounds to keep the worktree on the branch while not keeping it on the branch.

jujutsu workspace are much nicer in that regard.

[1] I know there are tons of ways search and analyze in git but over the years I found a pristine working copy to be the most versatile solution.

replies(6): >>46191261 #>>46191697 #>>46191865 #>>46192204 #>>46194289 #>>46197961 #
1. htgb ◴[] No.46191261[source]
That sounds like a nice improvement, just like many other aspects of jj!

Tools should adapt to us and not the other way around, but if you are stuck with git, there's a slightly different workflow that supports your use case: detached head. Whenever I check out branches that I don't intend on committing to directly, I checkout e.g. origin/main. This can be checked out in many worktrees. I actually find it more ergonomic and did this before using worktrees: there are no extra steps in keeping a local main pointer up to date.

replies(1): >>46191472 #
2. weinzierl ◴[] No.46191472[source]
The detached head is what I meant with keeping it on the branch while not keeping it on the branch.

The complication comes from trying to stay current. With a regular worktree I could just pull, but now I have to remember the branch, fetch all and reset hard to the remembered branch.