]>
Commit | Line | Data |
---|---|---|
1 | #ifndef STATUS_H | |
2 | #define STATUS_H | |
3 | ||
4 | #include "string-list.h" | |
5 | #include "color.h" | |
6 | #include "pathspec.h" | |
7 | #include "remote.h" | |
8 | ||
9 | struct repository; | |
10 | struct worktree; | |
11 | ||
12 | enum color_wt_status { | |
13 | WT_STATUS_HEADER = 0, | |
14 | WT_STATUS_UPDATED, | |
15 | WT_STATUS_CHANGED, | |
16 | WT_STATUS_UNTRACKED, | |
17 | WT_STATUS_NOBRANCH, | |
18 | WT_STATUS_UNMERGED, | |
19 | WT_STATUS_LOCAL_BRANCH, | |
20 | WT_STATUS_REMOTE_BRANCH, | |
21 | WT_STATUS_ONBRANCH, | |
22 | WT_STATUS_MAXSLOT | |
23 | }; | |
24 | ||
25 | enum untracked_status_type { | |
26 | SHOW_NO_UNTRACKED_FILES, | |
27 | SHOW_NORMAL_UNTRACKED_FILES, | |
28 | SHOW_ALL_UNTRACKED_FILES | |
29 | }; | |
30 | ||
31 | enum show_ignored_type { | |
32 | SHOW_NO_IGNORED, | |
33 | SHOW_TRADITIONAL_IGNORED, | |
34 | SHOW_MATCHING_IGNORED, | |
35 | }; | |
36 | ||
37 | /* from where does this commit originate */ | |
38 | enum commit_whence { | |
39 | FROM_COMMIT, /* normal */ | |
40 | FROM_MERGE, /* commit came from merge */ | |
41 | FROM_CHERRY_PICK /* commit came from cherry-pick */ | |
42 | }; | |
43 | ||
44 | struct wt_status_change_data { | |
45 | int worktree_status; | |
46 | int index_status; | |
47 | int stagemask; | |
48 | int mode_head, mode_index, mode_worktree; | |
49 | struct object_id oid_head, oid_index; | |
50 | int rename_status; | |
51 | int rename_score; | |
52 | char *rename_source; | |
53 | unsigned dirty_submodule : 2; | |
54 | unsigned new_submodule_commits : 1; | |
55 | }; | |
56 | ||
57 | enum wt_status_format { | |
58 | STATUS_FORMAT_NONE = 0, | |
59 | STATUS_FORMAT_LONG, | |
60 | STATUS_FORMAT_SHORT, | |
61 | STATUS_FORMAT_PORCELAIN, | |
62 | STATUS_FORMAT_PORCELAIN_V2, | |
63 | ||
64 | STATUS_FORMAT_UNSPECIFIED | |
65 | }; | |
66 | ||
67 | #define HEAD_DETACHED_AT _("HEAD detached at ") | |
68 | #define HEAD_DETACHED_FROM _("HEAD detached from ") | |
69 | ||
70 | struct wt_status_state { | |
71 | int merge_in_progress; | |
72 | int am_in_progress; | |
73 | int am_empty_patch; | |
74 | int rebase_in_progress; | |
75 | int rebase_interactive_in_progress; | |
76 | int cherry_pick_in_progress; | |
77 | int bisect_in_progress; | |
78 | int revert_in_progress; | |
79 | int detached_at; | |
80 | char *branch; | |
81 | char *onto; | |
82 | char *detached_from; | |
83 | struct object_id detached_oid; | |
84 | struct object_id revert_head_oid; | |
85 | struct object_id cherry_pick_head_oid; | |
86 | }; | |
87 | ||
88 | struct wt_status { | |
89 | struct repository *repo; | |
90 | int is_initial; | |
91 | char *branch; | |
92 | const char *reference; | |
93 | struct pathspec pathspec; | |
94 | int verbose; | |
95 | int amend; | |
96 | enum commit_whence whence; | |
97 | int nowarn; | |
98 | int use_color; | |
99 | int no_gettext; | |
100 | int display_comment_prefix; | |
101 | int relative_paths; | |
102 | int submodule_summary; | |
103 | enum show_ignored_type show_ignored_mode; | |
104 | enum untracked_status_type show_untracked_files; | |
105 | const char *ignore_submodule_arg; | |
106 | char color_palette[WT_STATUS_MAXSLOT][COLOR_MAXLEN]; | |
107 | unsigned colopts; | |
108 | int null_termination; | |
109 | int commit_template; | |
110 | int show_branch; | |
111 | int show_stash; | |
112 | int hints; | |
113 | enum ahead_behind_flags ahead_behind_flags; | |
114 | int detect_rename; | |
115 | int rename_score; | |
116 | int rename_limit; | |
117 | enum wt_status_format status_format; | |
118 | struct wt_status_state state; | |
119 | unsigned char sha1_commit[GIT_MAX_RAWSZ]; /* when not Initial */ | |
120 | ||
121 | /* These are computed during processing of the individual sections */ | |
122 | int committable; | |
123 | int workdir_dirty; | |
124 | const char *index_file; | |
125 | FILE *fp; | |
126 | const char *prefix; | |
127 | struct string_list change; | |
128 | struct string_list untracked; | |
129 | struct string_list ignored; | |
130 | uint32_t untracked_in_ms; | |
131 | }; | |
132 | ||
133 | size_t wt_status_locate_end(const char *s, size_t len); | |
134 | void wt_status_append_cut_line(struct strbuf *buf); | |
135 | void wt_status_add_cut_line(FILE *fp); | |
136 | void wt_status_prepare(struct repository *r, struct wt_status *s); | |
137 | void wt_status_print(struct wt_status *s); | |
138 | void wt_status_collect(struct wt_status *s); | |
139 | void wt_status_collect_free_buffers(struct wt_status *s); | |
140 | void wt_status_get_state(struct repository *repo, | |
141 | struct wt_status_state *state, | |
142 | int get_detached_from); | |
143 | int wt_status_check_rebase(const struct worktree *wt, | |
144 | struct wt_status_state *state); | |
145 | int wt_status_check_bisect(const struct worktree *wt, | |
146 | struct wt_status_state *state); | |
147 | ||
148 | __attribute__((format (printf, 3, 4))) | |
149 | void status_printf_ln(struct wt_status *s, const char *color, const char *fmt, ...); | |
150 | __attribute__((format (printf, 3, 4))) | |
151 | void status_printf(struct wt_status *s, const char *color, const char *fmt, ...); | |
152 | ||
153 | /* The following functions expect that the caller took care of reading the index. */ | |
154 | int has_unstaged_changes(struct repository *repo, | |
155 | int ignore_submodules); | |
156 | int has_uncommitted_changes(struct repository *repo, | |
157 | int ignore_submodules); | |
158 | int require_clean_work_tree(struct repository *repo, | |
159 | const char *action, | |
160 | const char *hint, | |
161 | int ignore_submodules, | |
162 | int gently); | |
163 | ||
164 | #endif /* STATUS_H */ |