From f5d067a2b28143dca237712e5dae7738d563f85c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Fri, 22 Apr 2016 20:01:34 +0700 Subject: [PATCH] wt-status.c: split bisect detection out of wt_status_get_state() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And make it work with any given worktree, in preparation for (again) find_shared_symref(). read_and_strip_branch() is deleted because it's no longer used. Signed-off-by: Nguyễn Thái Ngọc Duy Signed-off-by: Junio C Hamano --- wt-status.c | 23 ++++++++++++++--------- wt-status.h | 2 ++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/wt-status.c b/wt-status.c index ce5080c1a2..0032ef5f6f 100644 --- a/wt-status.c +++ b/wt-status.c @@ -1296,11 +1296,6 @@ got_nothing: return NULL; } -static char *read_and_strip_branch(const char *path) -{ - return get_branch(NULL, path); -} - struct grab_1st_switch_cbdata { struct strbuf buf; unsigned char nsha1[20]; @@ -1393,6 +1388,19 @@ int wt_status_check_rebase(const struct worktree *wt, return 1; } +int wt_status_check_bisect(const struct worktree *wt, + struct wt_status_state *state) +{ + struct stat st; + + if (!stat(worktree_git_path(wt, "BISECT_LOG"), &st)) { + state->bisect_in_progress = 1; + state->branch = get_branch(wt, "BISECT_START"); + return 1; + } + return 0; +} + void wt_status_get_state(struct wt_status_state *state, int get_detached_from) { @@ -1408,10 +1416,7 @@ void wt_status_get_state(struct wt_status_state *state, state->cherry_pick_in_progress = 1; hashcpy(state->cherry_pick_head_sha1, sha1); } - if (!stat(git_path("BISECT_LOG"), &st)) { - state->bisect_in_progress = 1; - state->branch = read_and_strip_branch("BISECT_START"); - } + wt_status_check_bisect(NULL, state); if (!stat(git_path_revert_head(), &st) && !get_sha1("REVERT_HEAD", sha1)) { state->revert_in_progress = 1; diff --git a/wt-status.h b/wt-status.h index c4ddcad27d..2ca93f6957 100644 --- a/wt-status.h +++ b/wt-status.h @@ -104,6 +104,8 @@ void wt_status_collect(struct wt_status *s); void wt_status_get_state(struct wt_status_state *state, int get_detached_from); int wt_status_check_rebase(const struct worktree *wt, struct wt_status_state *state); +int wt_status_check_bisect(const struct worktree *wt, + struct wt_status_state *state); void wt_shortstatus_print(struct wt_status *s); void wt_porcelain_print(struct wt_status *s);