From: Jasper Mayone <me@jaspermayone.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, phillip.wood123@gmail.com,
sunshine@sunshineco.com, kristofferhaugsbakk@fastmail.com,
ben.knoble@gmail.com, haraldnordgren@gmail.com,
Jasper Mayone <me@jaspermayone.com>
Subject: [PATCH 0/2] worktree: treat a branch being rebased or bisected as checked out
Date: Fri, 30 Oct 2026 10:21:35 -0400 [thread overview]
Message-ID: <20261030142137.54750-1-me@jaspermayone.com> (raw)
In-Reply-To: <20261024165311.57387-1-me@jaspermayone.com>
This replaces my "git worktree list --branch" patch [1]. In that
thread Kristoffer pointed out that "git for-each-ref --merged <commit>
--format='%(worktreepath)' refs/heads/" already finds the worktrees of
merged branches, so a new option is not needed. What is missing is
that %(worktreepath) ignores a branch while a worktree is rebasing or
bisecting it, although "git worktree add" and "git branch -d" already
treat that branch as checked out. Phillip agreed that this is a bug.
Ben then asked what happens if such a worktree is passed to "git
worktree remove". Today it is removed, and the rebase or bisect state
is lost with it, if the files happen to be clean. Phillip called that
a bug too, and more likely to be hit once %(worktreepath) reports
these worktrees, so it is fixed first.
1/2 makes "git worktree remove" refuse a worktree in the middle of a
rebase, "git am", bisect, or cherry-pick or revert sequence,
unless --force is given.
2/2 makes %(worktreepath), and so the "+" marker of "git branch",
name the worktree that is rebasing or bisecting a branch, as
prepare_checked_out_branches() in branch.c does. Branches that
"rebase --update-refs" will move are not included.
Two things reviewers may want to decide differently:
* In the worktree that is doing the rebase, "git branch" now shows
both "* (no branch, rebasing topic)" and "+ topic". I documented
that rather than special-case the current worktree in the format
that "git branch" builds, because %(worktreepath) itself should not
depend on where it is run. If you would rather hide the "+" there,
I can do that in "git branch" instead.
* A merge stopped with --no-commit is not checked by 1/2. Its staged
changes already make "git status" report the worktree as unclean in
the common case.
[1] https://lore.kernel.org/git/20261024165311.57387-1-me@jaspermayone.com/
Jasper Mayone (2):
worktree remove: refuse a worktree in the middle of a rebase or bisect
ref-filter: name the worktree of a branch being rebased or bisected
Documentation/git-branch.adoc | 5 ++-
Documentation/git-for-each-ref.adoc | 4 +-
Documentation/git-worktree.adoc | 11 +++--
builtin/worktree.c | 31 +++++++++++++-
ref-filter.c | 60 +++++++++++++++++++++------
t/t2403-worktree-move.sh | 59 +++++++++++++++++++++++++++
t/t3203-branch-output.sh | 35 ++++++++++++++++
t/t6302-for-each-ref-filter.sh | 63 +++++++++++++++++++++++++++++
8 files changed, 249 insertions(+), 19 deletions(-)
base-commit: b9e5cff1803ab24582201ef059516eb16014b9d9
--
2.56.0
next prev parent reply other threads:[~2026-10-30 14:21 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-21 17:33 [RFC PATCH 0/1] worktree list: add --merged and --no-merged Jasper Mayone
2026-10-21 17:33 ` [RFC PATCH 1/1] " Jasper Mayone
2026-10-23 18:30 ` Junio C Hamano
2026-10-24 6:25 ` Eric Sunshine
2026-10-24 16:53 ` [PATCH v2] worktree list: add --branch to select worktrees by branch Jasper Mayone
2026-10-25 14:47 ` Phillip Wood
2026-10-26 11:02 ` Phillip Wood
2026-10-28 6:02 ` Eric Sunshine
2026-10-28 15:27 ` Junio C Hamano
2026-10-28 11:32 ` Kristoffer Haugsbakk
2026-10-29 4:46 ` Jasper Mayone
2026-10-29 5:01 ` Eric Sunshine
2026-10-29 11:14 ` Phillip Wood
2026-10-29 14:23 ` Ben Knoble
2026-10-29 16:10 ` Phillip Wood
2026-10-30 14:21 ` Jasper Mayone [this message]
2026-10-30 14:21 ` [PATCH 1/2] worktree remove: refuse a worktree in the middle of a rebase or bisect Jasper Mayone
2026-10-30 14:21 ` [PATCH 2/2] ref-filter: name the worktree of a branch being rebased or bisected Jasper Mayone
2026-10-21 21:36 ` [RFC PATCH 0/1] worktree list: add --merged and --no-merged Harald Nordgren
2026-10-21 22:12 ` Junio C Hamano
2026-10-22 7:21 ` Harald Nordgren
2026-10-22 17:58 ` Kristoffer Haugsbakk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261030142137.54750-1-me@jaspermayone.com \
--to=me@jaspermayone.com \
--cc=ben.knoble@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=haraldnordgren@gmail.com \
--cc=kristofferhaugsbakk@fastmail.com \
--cc=phillip.wood123@gmail.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox