043a4492b3
Expose the cherry-picking machinery through a public sequencer_pick_revisions() (renamed from pick_revisions() in builtin/revert.c), so that cherry-picking and reverting are special cases of a general sequencer operation. The cherry-pick builtin is now a thin wrapper that does command-line argument parsing before calling into sequencer_pick_revisions(). In the future, we can write a new "foo" builtin that calls into the sequencer like: memset(&opts, 0, sizeof(opts)); opts.action = REPLAY_FOO; opts.revisions = xmalloc(sizeof(*opts.revs)); parse_args_populate_opts(argc, argv, &opts); init_revisions(opts.revs); sequencer_pick_revisions(&opts); This patch does not intend to make any functional changes. Check with: $ git blame -s -C HEAD^..HEAD -- sequencer.c | grep -C3 '^[^^]' Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
50 lines
856 B
C
50 lines
856 B
C
#ifndef SEQUENCER_H
|
|
#define SEQUENCER_H
|
|
|
|
#define SEQ_DIR "sequencer"
|
|
#define SEQ_HEAD_FILE "sequencer/head"
|
|
#define SEQ_TODO_FILE "sequencer/todo"
|
|
#define SEQ_OPTS_FILE "sequencer/opts"
|
|
|
|
enum replay_action {
|
|
REPLAY_REVERT,
|
|
REPLAY_PICK
|
|
};
|
|
|
|
enum replay_subcommand {
|
|
REPLAY_NONE,
|
|
REPLAY_REMOVE_STATE,
|
|
REPLAY_CONTINUE,
|
|
REPLAY_ROLLBACK
|
|
};
|
|
|
|
struct replay_opts {
|
|
enum replay_action action;
|
|
enum replay_subcommand subcommand;
|
|
|
|
/* Boolean options */
|
|
int edit;
|
|
int record_origin;
|
|
int no_commit;
|
|
int signoff;
|
|
int allow_ff;
|
|
int allow_rerere_auto;
|
|
|
|
int mainline;
|
|
|
|
/* Merge strategy */
|
|
const char *strategy;
|
|
const char **xopts;
|
|
size_t xopts_nr, xopts_alloc;
|
|
|
|
/* Only used by REPLAY_NONE */
|
|
struct rev_info *revs;
|
|
};
|
|
|
|
/* Removes SEQ_DIR. */
|
|
extern void remove_sequencer_state(void);
|
|
|
|
int sequencer_pick_revisions(struct replay_opts *opts);
|
|
|
|
#endif
|