Merge branch 'js/test-git-installed'
[gitweb.git] / wt-status.h
index 1673d146fa2f1e15eabccd1c6b12d0e74b5f0870..3a95975032bb1ee8d87cca4e8a1bbc0afe62e42c 100644 (file)
@@ -7,6 +7,7 @@
 #include "pathspec.h"
 #include "remote.h"
 
+struct repository;
 struct worktree;
 
 enum color_wt_status {
@@ -64,7 +65,26 @@ enum wt_status_format {
        STATUS_FORMAT_UNSPECIFIED
 };
 
+struct wt_status_state {
+       int merge_in_progress;
+       int am_in_progress;
+       int am_empty_patch;
+       int rebase_in_progress;
+       int rebase_interactive_in_progress;
+       int cherry_pick_in_progress;
+       int bisect_in_progress;
+       int revert_in_progress;
+       int detached_at;
+       char *branch;
+       char *onto;
+       char *detached_from;
+       struct object_id detached_oid;
+       struct object_id revert_head_oid;
+       struct object_id cherry_pick_head_oid;
+};
+
 struct wt_status {
+       struct repository *repo;
        int is_initial;
        char *branch;
        const char *reference;
@@ -93,10 +113,11 @@ struct wt_status {
        int rename_score;
        int rename_limit;
        enum wt_status_format status_format;
+       struct wt_status_state state;
        unsigned char sha1_commit[GIT_MAX_RAWSZ]; /* when not Initial */
 
        /* These are computed during processing of the individual sections */
-       int commitable;
+       int committable;
        int workdir_dirty;
        const char *index_file;
        FILE *fp;
@@ -107,30 +128,15 @@ struct wt_status {
        uint32_t untracked_in_ms;
 };
 
-struct wt_status_state {
-       int merge_in_progress;
-       int am_in_progress;
-       int am_empty_patch;
-       int rebase_in_progress;
-       int rebase_interactive_in_progress;
-       int cherry_pick_in_progress;
-       int bisect_in_progress;
-       int revert_in_progress;
-       int detached_at;
-       char *branch;
-       char *onto;
-       char *detached_from;
-       struct object_id detached_oid;
-       struct object_id revert_head_oid;
-       struct object_id cherry_pick_head_oid;
-};
-
 size_t wt_status_locate_end(const char *s, size_t len);
 void wt_status_add_cut_line(FILE *fp);
-void wt_status_prepare(struct wt_status *s);
+void wt_status_prepare(struct repository *r, struct wt_status *s);
 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_collect_free_buffers(struct wt_status *s);
+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,
@@ -142,9 +148,14 @@ __attribute__((format (printf, 3, 4)))
 void status_printf(struct wt_status *s, const char *color, const char *fmt, ...);
 
 /* The following functions expect that the caller took care of reading the index. */
-int has_unstaged_changes(int ignore_submodules);
-int has_uncommitted_changes(int ignore_submodules);
-int require_clean_work_tree(const char *action, const char *hint,
-       int ignore_submodules, int gently);
+int has_unstaged_changes(struct repository *repo,
+                        int ignore_submodules);
+int has_uncommitted_changes(struct repository *repo,
+                           int ignore_submodules);
+int require_clean_work_tree(struct repository *repo,
+                           const char *action,
+                           const char *hint,
+                           int ignore_submodules,
+                           int gently);
 
 #endif /* STATUS_H */