You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.5 KiB
139 lines
3.5 KiB
#ifndef STATUS_H |
|
#define STATUS_H |
|
|
|
#include <stdio.h> |
|
#include "string-list.h" |
|
#include "color.h" |
|
#include "pathspec.h" |
|
|
|
struct worktree; |
|
|
|
enum color_wt_status { |
|
WT_STATUS_HEADER = 0, |
|
WT_STATUS_UPDATED, |
|
WT_STATUS_CHANGED, |
|
WT_STATUS_UNTRACKED, |
|
WT_STATUS_NOBRANCH, |
|
WT_STATUS_UNMERGED, |
|
WT_STATUS_LOCAL_BRANCH, |
|
WT_STATUS_REMOTE_BRANCH, |
|
WT_STATUS_ONBRANCH, |
|
WT_STATUS_MAXSLOT |
|
}; |
|
|
|
enum untracked_status_type { |
|
SHOW_NO_UNTRACKED_FILES, |
|
SHOW_NORMAL_UNTRACKED_FILES, |
|
SHOW_ALL_UNTRACKED_FILES |
|
}; |
|
|
|
/* from where does this commit originate */ |
|
enum commit_whence { |
|
FROM_COMMIT, /* normal */ |
|
FROM_MERGE, /* commit came from merge */ |
|
FROM_CHERRY_PICK /* commit came from cherry-pick */ |
|
}; |
|
|
|
struct wt_status_change_data { |
|
int worktree_status; |
|
int index_status; |
|
int stagemask; |
|
int score; |
|
int mode_head, mode_index, mode_worktree; |
|
struct object_id oid_head, oid_index; |
|
char *head_path; |
|
unsigned dirty_submodule : 2; |
|
unsigned new_submodule_commits : 1; |
|
}; |
|
|
|
enum wt_status_format { |
|
STATUS_FORMAT_NONE = 0, |
|
STATUS_FORMAT_LONG, |
|
STATUS_FORMAT_SHORT, |
|
STATUS_FORMAT_PORCELAIN, |
|
STATUS_FORMAT_PORCELAIN_V2, |
|
|
|
STATUS_FORMAT_UNSPECIFIED |
|
}; |
|
|
|
struct wt_status { |
|
int is_initial; |
|
char *branch; |
|
const char *reference; |
|
struct pathspec pathspec; |
|
int verbose; |
|
int amend; |
|
enum commit_whence whence; |
|
int nowarn; |
|
int use_color; |
|
int no_gettext; |
|
int display_comment_prefix; |
|
int relative_paths; |
|
int submodule_summary; |
|
int show_ignored_files; |
|
enum untracked_status_type show_untracked_files; |
|
const char *ignore_submodule_arg; |
|
char color_palette[WT_STATUS_MAXSLOT][COLOR_MAXLEN]; |
|
unsigned colopts; |
|
int null_termination; |
|
int commit_template; |
|
int show_branch; |
|
int show_stash; |
|
int hints; |
|
|
|
enum wt_status_format status_format; |
|
unsigned char sha1_commit[GIT_MAX_RAWSZ]; /* when not Initial */ |
|
|
|
/* These are computed during processing of the individual sections */ |
|
int commitable; |
|
int workdir_dirty; |
|
const char *index_file; |
|
FILE *fp; |
|
const char *prefix; |
|
struct string_list change; |
|
struct string_list untracked; |
|
struct string_list ignored; |
|
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; |
|
unsigned char detached_sha1[20]; |
|
unsigned char revert_head_sha1[20]; |
|
unsigned char cherry_pick_head_sha1[20]; |
|
}; |
|
|
|
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_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); |
|
int wt_status_check_rebase(const struct worktree *wt, |
|
struct wt_status_state *state); |
|
int wt_status_check_bisect(const struct worktree *wt, |
|
struct wt_status_state *state); |
|
|
|
__attribute__((format (printf, 3, 4))) |
|
void status_printf_ln(struct wt_status *s, const char *color, const char *fmt, ...); |
|
__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); |
|
|
|
#endif /* STATUS_H */
|
|
|