Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
---
 ref-filter.c |  2 +-
 wt-status.c  | 24 +++++++++++++-----------
 wt-status.h  |  4 +++-
 3 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/ref-filter.c b/ref-filter.c
index 0bccfceff2..1b229b84da 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -1409,7 +1409,7 @@ char *get_head_description(void)
        struct strbuf desc = STRBUF_INIT;
        struct wt_status_state state;
        memset(&state, 0, sizeof(state));
-       wt_status_get_state(&state, 1);
+       wt_status_get_state(the_repository, &state, 1);
        if (state.rebase_in_progress ||
            state.rebase_interactive_in_progress) {
                if (state.branch)
diff --git a/wt-status.c b/wt-status.c
index 57bc2aac0f..1d3a5fe267 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -1322,7 +1322,7 @@ static void show_rebase_in_progress(struct wt_status *s,
                        status_printf_ln(s, color,
                                _("  (use \"git rebase --abort\" to check out 
the original branch)"));
                }
-       } else if (state->rebase_in_progress || 
!stat(git_path_merge_msg(the_repository), &st)) {
+       } else if (state->rebase_in_progress || 
!stat(git_path_merge_msg(s->repo), &st)) {
                print_rebase_state(s, state, color);
                if (s->hints)
                        status_printf_ln(s, color,
@@ -1477,7 +1477,8 @@ static int grab_1st_switch(struct object_id *ooid, struct 
object_id *noid,
        return 1;
 }
 
-static void wt_status_get_detached_from(struct wt_status_state *state)
+static void wt_status_get_detached_from(struct repository *repo,
+                                       struct wt_status_state *state)
 {
        struct grab_1st_switch_cbdata cb;
        struct commit *commit;
@@ -1494,7 +1495,7 @@ static void wt_status_get_detached_from(struct 
wt_status_state *state)
            /* sha1 is a commit? match without further lookup */
            (!oidcmp(&cb.noid, &oid) ||
             /* perhaps sha1 is a tag, try to dereference to a commit */
-            ((commit = lookup_commit_reference_gently(the_repository, &oid, 
1)) != NULL &&
+            ((commit = lookup_commit_reference_gently(repo, &oid, 1)) != NULL 
&&
              !oidcmp(&cb.noid, &commit->object.oid)))) {
                const char *from = ref;
                if (!skip_prefix(from, "refs/tags/", &from))
@@ -1551,30 +1552,31 @@ int wt_status_check_bisect(const struct worktree *wt,
        return 0;
 }
 
-void wt_status_get_state(struct wt_status_state *state,
+void wt_status_get_state(struct repository *repo,
+                        struct wt_status_state *state,
                         int get_detached_from)
 {
        struct stat st;
        struct object_id oid;
 
-       if (!stat(git_path_merge_head(the_repository), &st)) {
+       if (!stat(git_path_merge_head(repo), &st)) {
                state->merge_in_progress = 1;
        } else if (wt_status_check_rebase(NULL, state)) {
                ;               /* all set */
-       } else if (!stat(git_path_cherry_pick_head(the_repository), &st) &&
+       } else if (!stat(git_path_cherry_pick_head(repo), &st) &&
                        !get_oid("CHERRY_PICK_HEAD", &oid)) {
                state->cherry_pick_in_progress = 1;
                oidcpy(&state->cherry_pick_head_oid, &oid);
        }
        wt_status_check_bisect(NULL, state);
-       if (!stat(git_path_revert_head(the_repository), &st) &&
+       if (!stat(git_path_revert_head(repo), &st) &&
            !get_oid("REVERT_HEAD", &oid)) {
                state->revert_in_progress = 1;
                oidcpy(&state->revert_head_oid, &oid);
        }
 
        if (get_detached_from)
-               wt_status_get_detached_from(state);
+               wt_status_get_detached_from(repo, state);
 }
 
 static void wt_longstatus_print_state(struct wt_status *s,
@@ -1602,7 +1604,7 @@ static void wt_longstatus_print(struct wt_status *s)
        struct wt_status_state state;
 
        memset(&state, 0, sizeof(state));
-       wt_status_get_state(&state,
+       wt_status_get_state(s->repo, &state,
                            s->branch && !strcmp(s->branch, "HEAD"));
 
        if (s->branch) {
@@ -1947,7 +1949,7 @@ static void wt_porcelain_v2_print_tracking(struct 
wt_status *s)
        char eol = s->null_termination ? '\0' : '\n';
 
        memset(&state, 0, sizeof(state));
-       wt_status_get_state(&state, s->branch && !strcmp(s->branch, "HEAD"));
+       wt_status_get_state(s->repo, &state, s->branch && !strcmp(s->branch, 
"HEAD"));
 
        fprintf(s->fp, "# branch.oid %s%c",
                        (s->is_initial ? "(initial)" : 
sha1_to_hex(s->sha1_commit)),
@@ -2355,7 +2357,7 @@ int has_uncommitted_changes(struct repository *repo,
                 * We have no head (or it's corrupt); use the empty tree,
                 * which will complain if the index is non-empty.
                 */
-               struct tree *tree = lookup_tree(the_repository, 
the_hash_algo->empty_tree);
+               struct tree *tree = lookup_tree(repo, 
the_hash_algo->empty_tree);
                add_pending_object(&rev_info, &tree->object, "");
        }
 
diff --git a/wt-status.h b/wt-status.h
index 253c5ce7ec..9e8337e9db 100644
--- a/wt-status.h
+++ b/wt-status.h
@@ -132,7 +132,9 @@ void wt_status_add_cut_line(FILE *fp);
 void wt_status_prepare(struct wt_status *s, struct repository *repo);
 void wt_status_print(struct wt_status *s);
 void wt_status_collect(struct wt_status *s);
-void wt_status_get_state(struct wt_status_state *state, int get_detached_from);
+void wt_status_get_state(struct repository *repo,
+                        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,
-- 
2.19.0.rc0.337.ge906d732e7

Reply via email to