summaryrefslogtreecommitdiff
path: root/wt-status.c
diff options
context:
space:
mode:
authorMichael J Gruber <git@drmicha.warpmail.net>2015-03-06 15:04:06 (GMT)
committerJunio C Hamano <gitster@pobox.com>2015-03-06 19:52:35 (GMT)
commit970399e74c14df4dc82f10e1fcd0f12531e9b305 (patch)
treebf5f0c9e68a055ad2d2ce88edff4be690b45c82a /wt-status.c
parent9874fca7122563e28d699a911404fc49d2a24f1c (diff)
downloadgit-970399e74c14df4dc82f10e1fcd0f12531e9b305.zip
git-970399e74c14df4dc82f10e1fcd0f12531e9b305.tar.gz
git-970399e74c14df4dc82f10e1fcd0f12531e9b305.tar.bz2
wt-status: refactor detached HEAD analysis
wt_status_print() is the only caller of wt_status_get_detached_from(). The latter performs most of the analysis of a detached HEAD, including finding state->detached_from; the caller checks whether the detached HEAD is still at state->detached_from or has moved away. Move that last bit of analysis to wt_status_get_detached_from(), too, and store the boolean result in state->detached_at. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'wt-status.c')
-rw-r--r--wt-status.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/wt-status.c b/wt-status.c
index b54eac5..8b7543b 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -1222,6 +1222,8 @@ static void wt_status_get_detached_from(struct wt_status_state *state)
state->detached_from =
xstrdup(find_unique_abbrev(cb.nsha1, DEFAULT_ABBREV));
hashcpy(state->detached_sha1, cb.nsha1);
+ state->detached_at = !get_sha1("HEAD", sha1) &&
+ !hashcmp(sha1, state->detached_sha1);
free(ref);
strbuf_release(&cb.buf);
@@ -1310,10 +1312,8 @@ void wt_status_print(struct wt_status *s)
on_what = _("rebase in progress; onto ");
branch_name = state.onto;
} else if (state.detached_from) {
- unsigned char sha1[20];
branch_name = state.detached_from;
- if (!get_sha1("HEAD", sha1) &&
- !hashcmp(sha1, state.detached_sha1))
+ if (state.detached_at)
on_what = _("HEAD detached at ");
else
on_what = _("HEAD detached from ");