Thread (13 messages) flat view 13 messages, 5 authors, 2021-02-23

Re: New orphan worktree?

From: Eric Sunshine <hidden>
Date: 2021-02-21 19:56:52

On Wed, Feb 17, 2021 at 8:26 PM Ævar Arnfjörð Bjarmason
[off-list ref] wrote:
On Wed, Jan 06 2021, Eric Sunshine wrote:
quoted
Yep, when/if --orphan is added to `git worktree add`, it should mimic
the behavior of --orphan in git-switch rather than git-checkout.
How would a mode for "worktree add --orphan" that mimics checkout rather
than switch even look like? The "checkout --orphan" special-case is
because we retain the index, so you need to "git rm -rf .".

But with worktrees we always get a new index, so AFAICT the only way to
make it work like "checkout" would be to have it be the only mode that
copies over the current worktree's index.
I hadn't actually put any thought into it aside from (1) `--orphan`
being a likely candidate for `git worktree add`, and (2) my uses of
orphan branches always involved `git checkout --orphan && git rm -rf
.`. I never got as far as thinking about the actual implementation.
In any case I implemented a rough version of this today, and it uses the
"switch" semantics. I only discovered this ML thread afterwards.

It's surely full of bugs, and needs test work (see all the BUG(...)),
but if someone's interested in taking it further all it should need is
some more tests & dealing with the edge cases of incompatible options
etc. It's Signed-off-by: Ævar Arnfjörð Bjarmason [off-list ref].
Thanks. This looks like a good start.
+test_expect_success '"add" worktree orphan branch' '
+       git worktree add --orphan -b orphan here-orphan &&
Rather than making --orphan a boolean flag, we'd probably want to
mirror the behavior of the other commands and have <branch> be an
argument consumed by --orphan:

    git worktree add --orphan <branch> <path>

That would make --orphan, -b, and -B mutually exclusive, much like
they are for git-checkout, and much like -c, -C, and --orphan are
mutually exclusive for git-switch.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help