/*
* read 'path_to_ref' into 'ref'. Also if is_detached is not NULL,
- * set is_detached to 1 (0) if the ref is detatched (is not detached).
+ * set is_detached to 1 (0) if the ref is detached (is not detached).
*
* $GIT_COMMON_DIR/$symref (e.g. HEAD) is practically outside $GIT_DIR so
* for linked worktrees, `resolve_ref_unsafe()` won't work (it uses
return git_common_path("worktrees/%s", wt->id);
}
-static int is_worktree_being_rebased(const struct worktree *wt,
- const char *target)
+int is_worktree_being_rebased(const struct worktree *wt,
+ const char *target)
{
struct wt_status_state state;
int found_rebase;
return found_rebase;
}
+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
existing = wt;
break;
}
+ if (is_worktree_being_bisected(wt, target)) {
+ existing = wt;
+ break;
+ }
}
strbuf_reset(&path);