]>
Commit | Line | Data |
---|---|---|
c91f0d92 JK |
1 | #ifndef STATUS_H |
2 | #define STATUS_H | |
3 | ||
50b7e70f | 4 | #include "string-list.h" |
23900a96 | 5 | #include "color.h" |
7aa9b9ba | 6 | #include "pathspec.h" |
fd9b544a | 7 | #include "remote.h" |
f26a0012 | 8 | |
5b02ca38 | 9 | struct repository; |
81eff27b NTND |
10 | struct worktree; |
11 | ||
c91f0d92 | 12 | enum color_wt_status { |
23900a96 | 13 | WT_STATUS_HEADER = 0, |
c91f0d92 JK |
14 | WT_STATUS_UPDATED, |
15 | WT_STATUS_CHANGED, | |
16 | WT_STATUS_UNTRACKED, | |
950ce2e2 | 17 | WT_STATUS_NOBRANCH, |
4d4d5726 | 18 | WT_STATUS_UNMERGED, |
05a59a08 | 19 | WT_STATUS_LOCAL_BRANCH, |
1d282327 AA |
20 | WT_STATUS_REMOTE_BRANCH, |
21 | WT_STATUS_ONBRANCH, | |
22 | WT_STATUS_MAXSLOT | |
c91f0d92 JK |
23 | }; |
24 | ||
4bfee30a | 25 | enum untracked_status_type { |
6c2ce048 MSO |
26 | SHOW_NO_UNTRACKED_FILES, |
27 | SHOW_NORMAL_UNTRACKED_FILES, | |
4bfee30a MSO |
28 | SHOW_ALL_UNTRACKED_FILES |
29 | }; | |
4bfee30a | 30 | |
eec0f7f2 JM |
31 | enum show_ignored_type { |
32 | SHOW_NO_IGNORED, | |
33 | SHOW_TRADITIONAL_IGNORED, | |
34 | SHOW_MATCHING_IGNORED, | |
35 | }; | |
36 | ||
37f7a857 JS |
37 | /* from where does this commit originate */ |
38 | enum commit_whence { | |
39 | FROM_COMMIT, /* normal */ | |
40 | FROM_MERGE, /* commit came from merge */ | |
8d57f757 | 41 | FROM_CHERRY_PICK_SINGLE, /* commit came from cherry-pick */ |
430b75f7 PW |
42 | FROM_CHERRY_PICK_MULTI, /* commit came from a sequence of cherry-picks */ |
43 | FROM_REBASE_PICK /* commit came from a pick/reword/edit */ | |
37f7a857 JS |
44 | }; |
45 | ||
8d57f757 PW |
46 | static inline int is_from_cherry_pick(enum commit_whence whence) |
47 | { | |
48 | return whence == FROM_CHERRY_PICK_SINGLE || | |
49 | whence == FROM_CHERRY_PICK_MULTI; | |
50 | } | |
51 | ||
430b75f7 PW |
52 | static inline int is_from_rebase(enum commit_whence whence) |
53 | { | |
54 | return whence == FROM_REBASE_PICK; | |
55 | } | |
56 | ||
50b7e70f JH |
57 | struct wt_status_change_data { |
58 | int worktree_status; | |
59 | int index_status; | |
60 | int stagemask; | |
1ecdecce JH |
61 | int mode_head, mode_index, mode_worktree; |
62 | struct object_id oid_head, oid_index; | |
5134ccde NTND |
63 | int rename_status; |
64 | int rename_score; | |
65 | char *rename_source; | |
9297f77e JL |
66 | unsigned dirty_submodule : 2; |
67 | unsigned new_submodule_commits : 1; | |
50b7e70f JH |
68 | }; |
69 | ||
be7e795e JH |
70 | enum wt_status_format { |
71 | STATUS_FORMAT_NONE = 0, | |
72 | STATUS_FORMAT_LONG, | |
73 | STATUS_FORMAT_SHORT, | |
74 | STATUS_FORMAT_PORCELAIN, | |
1ecdecce | 75 | STATUS_FORMAT_PORCELAIN_V2, |
be7e795e JH |
76 | |
77 | STATUS_FORMAT_UNSPECIFIED | |
78 | }; | |
79 | ||
28438e84 MD |
80 | #define HEAD_DETACHED_AT _("HEAD detached at ") |
81 | #define HEAD_DETACHED_FROM _("HEAD detached from ") | |
82 | ||
73ba5d78 SS |
83 | struct wt_status_state { |
84 | int merge_in_progress; | |
85 | int am_in_progress; | |
86 | int am_empty_patch; | |
87 | int rebase_in_progress; | |
88 | int rebase_interactive_in_progress; | |
89 | int cherry_pick_in_progress; | |
90 | int bisect_in_progress; | |
91 | int revert_in_progress; | |
92 | int detached_at; | |
93 | char *branch; | |
94 | char *onto; | |
95 | char *detached_from; | |
96 | struct object_id detached_oid; | |
97 | struct object_id revert_head_oid; | |
98 | struct object_id cherry_pick_head_oid; | |
99 | }; | |
100 | ||
c91f0d92 | 101 | struct wt_status { |
5b02ca38 | 102 | struct repository *repo; |
c91f0d92 JK |
103 | int is_initial; |
104 | char *branch; | |
105 | const char *reference; | |
15b55ae0 | 106 | struct pathspec pathspec; |
c91f0d92 JK |
107 | int verbose; |
108 | int amend; | |
37f7a857 | 109 | enum commit_whence whence; |
37d07f8f | 110 | int nowarn; |
d249b098 | 111 | int use_color; |
7a76c28f | 112 | int no_gettext; |
2556b996 | 113 | int display_comment_prefix; |
d249b098 JH |
114 | int relative_paths; |
115 | int submodule_summary; | |
eec0f7f2 | 116 | enum show_ignored_type show_ignored_mode; |
d249b098 | 117 | enum untracked_status_type show_untracked_files; |
46a958b3 | 118 | const char *ignore_submodule_arg; |
1d282327 | 119 | char color_palette[WT_STATUS_MAXSLOT][COLOR_MAXLEN]; |
4d2292e9 | 120 | unsigned colopts; |
3207a3a2 | 121 | int null_termination; |
4ddb1354 | 122 | int commit_template; |
d4a6bf1f | 123 | int show_branch; |
c1b5d019 | 124 | int show_stash; |
6a964f57 | 125 | int hints; |
fd9b544a | 126 | enum ahead_behind_flags ahead_behind_flags; |
e8b2dc2c BP |
127 | int detect_rename; |
128 | int rename_score; | |
129 | int rename_limit; | |
be7e795e | 130 | enum wt_status_format status_format; |
73ba5d78 | 131 | struct wt_status_state state; |
e0cb7cdb | 132 | struct object_id oid_commit; /* when not Initial */ |
be7e795e | 133 | |
2a3a3c24 | 134 | /* These are computed during processing of the individual sections */ |
6fa90194 | 135 | int committable; |
2a3a3c24 | 136 | int workdir_dirty; |
0f729f21 | 137 | const char *index_file; |
f26a0012 | 138 | FILE *fp; |
367c9886 | 139 | const char *prefix; |
50b7e70f | 140 | struct string_list change; |
76378683 | 141 | struct string_list untracked; |
6cb3f6b2 | 142 | struct string_list ignored; |
6a38ef2c | 143 | uint32_t untracked_in_ms; |
c91f0d92 JK |
144 | }; |
145 | ||
d76650b8 | 146 | size_t wt_status_locate_end(const char *s, size_t len); |
d540b70c | 147 | void wt_status_append_cut_line(struct strbuf *buf); |
fcef9312 | 148 | void wt_status_add_cut_line(FILE *fp); |
5b02ca38 | 149 | void wt_status_prepare(struct repository *r, struct wt_status *s); |
be7e795e | 150 | void wt_status_print(struct wt_status *s); |
76378683 | 151 | void wt_status_collect(struct wt_status *s); |
73ba5d78 | 152 | void wt_status_collect_free_buffers(struct wt_status *s); |
78845457 NTND |
153 | void wt_status_get_state(struct repository *repo, |
154 | struct wt_status_state *state, | |
155 | int get_detached_from); | |
81eff27b NTND |
156 | int wt_status_check_rebase(const struct worktree *wt, |
157 | struct wt_status_state *state); | |
f5d067a2 NTND |
158 | int wt_status_check_bisect(const struct worktree *wt, |
159 | struct wt_status_state *state); | |
c91f0d92 | 160 | |
8dd0ee82 JK |
161 | __attribute__((format (printf, 3, 4))) |
162 | void status_printf_ln(struct wt_status *s, const char *color, const char *fmt, ...); | |
163 | __attribute__((format (printf, 3, 4))) | |
164 | void status_printf(struct wt_status *s, const char *color, const char *fmt, ...); | |
becbdae8 | 165 | |
41a5dd6d | 166 | /* The following functions expect that the caller took care of reading the index. */ |
5b02ca38 NTND |
167 | int has_unstaged_changes(struct repository *repo, |
168 | int ignore_submodules); | |
169 | int has_uncommitted_changes(struct repository *repo, | |
170 | int ignore_submodules); | |
171 | int require_clean_work_tree(struct repository *repo, | |
172 | const char *action, | |
173 | const char *hint, | |
174 | int ignore_submodules, | |
175 | int gently); | |
fd84986f | 176 | |
c91f0d92 | 177 | #endif /* STATUS_H */ |