diff options
Diffstat (limited to 'worktree.c')
-rw-r--r-- | worktree.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/worktree.c b/worktree.c index 5043756663..aab4b9552e 100644 --- a/worktree.c +++ b/worktree.c @@ -234,6 +234,21 @@ static int is_worktree_being_rebased(const struct worktree *wt, return found_rebase; } +static int is_worktree_being_bisected(const struct worktree *wt, + const char *target) +{ + struct wt_status_state state; + int found_rebase; + + memset(&state, 0, sizeof(state)); + found_rebase = wt_status_check_bisect(wt, &state) && + state.branch && + starts_with(target, "refs/heads/") && + !strcmp(state.branch, target + strlen("refs/heads/")); + free(state.branch); + return found_rebase; +} + /* * note: this function should be able to detect shared symref even if * HEAD is temporarily detached (e.g. in the middle of rebase or @@ -261,6 +276,10 @@ const struct worktree *find_shared_symref(const char *symref, existing = wt; break; } + if (is_worktree_being_bisected(wt, target)) { + existing = wt; + break; + } } strbuf_reset(&path); |