Add core.mode configuration
[git] / sequencer.h
1 #ifndef SEQUENCER_H
2 #define SEQUENCER_H
3
4 #define SEQ_DIR         "sequencer"
5 #define SEQ_HEAD_FILE   "sequencer/head"
6 #define SEQ_TODO_FILE   "sequencer/todo"
7 #define SEQ_OPTS_FILE   "sequencer/opts"
8
9 #define APPEND_SIGNOFF_DEDUP (1u << 0)
10
11 enum replay_action {
12         REPLAY_REVERT,
13         REPLAY_PICK
14 };
15
16 enum replay_subcommand {
17         REPLAY_NONE,
18         REPLAY_REMOVE_STATE,
19         REPLAY_CONTINUE,
20         REPLAY_ROLLBACK
21 };
22
23 struct replay_opts {
24         enum replay_action action;
25         enum replay_subcommand subcommand;
26
27         /* Boolean options */
28         int edit;
29         int record_origin;
30         int no_commit;
31         int signoff;
32         int allow_ff;
33         int allow_rerere_auto;
34         int allow_empty;
35         int allow_empty_message;
36         int keep_redundant_commits;
37
38         int mainline;
39
40         const char *gpg_sign;
41
42         /* Merge strategy */
43         const char *strategy;
44         const char **xopts;
45         size_t xopts_nr, xopts_alloc;
46
47         /* Only used by REPLAY_NONE */
48         struct rev_info *revs;
49 };
50
51 int sequencer_pick_revisions(struct replay_opts *opts);
52
53 extern const char sign_off_header[];
54
55 void append_signoff(struct strbuf *msgbuf, int ignore_footer, unsigned flag);
56 void append_conflicts_hint(struct strbuf *msgbuf);
57
58 #endif