mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
sequencer (rebase -i): respect strategy/strategy_opts settings
The sequencer already has an idea about using different merge strategies. We just piggy-back on top of that, using rebase -i's own settings, when running the sequencer in interactive rebase mode. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
796c7972c7
commit
ca6c6b45dd
26
sequencer.c
26
sequencer.c
|
@ -114,6 +114,8 @@ static GIT_PATH_FUNC(rebase_path_verbose, "rebase-merge/verbose")
|
||||||
static GIT_PATH_FUNC(rebase_path_head_name, "rebase-merge/head-name")
|
static GIT_PATH_FUNC(rebase_path_head_name, "rebase-merge/head-name")
|
||||||
static GIT_PATH_FUNC(rebase_path_onto, "rebase-merge/onto")
|
static GIT_PATH_FUNC(rebase_path_onto, "rebase-merge/onto")
|
||||||
static GIT_PATH_FUNC(rebase_path_autostash, "rebase-merge/autostash")
|
static GIT_PATH_FUNC(rebase_path_autostash, "rebase-merge/autostash")
|
||||||
|
static GIT_PATH_FUNC(rebase_path_strategy, "rebase-merge/strategy")
|
||||||
|
static GIT_PATH_FUNC(rebase_path_strategy_opts, "rebase-merge/strategy_opts")
|
||||||
|
|
||||||
static inline int is_rebase_i(const struct replay_opts *opts)
|
static inline int is_rebase_i(const struct replay_opts *opts)
|
||||||
{
|
{
|
||||||
|
@ -1368,6 +1370,26 @@ static int populate_opts_cb(const char *key, const char *value, void *data)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void read_strategy_opts(struct replay_opts *opts, struct strbuf *buf)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
strbuf_reset(buf);
|
||||||
|
if (!read_oneliner(buf, rebase_path_strategy(), 0))
|
||||||
|
return;
|
||||||
|
opts->strategy = strbuf_detach(buf, NULL);
|
||||||
|
if (!read_oneliner(buf, rebase_path_strategy_opts(), 0))
|
||||||
|
return;
|
||||||
|
|
||||||
|
opts->xopts_nr = split_cmdline(buf->buf, (const char ***)&opts->xopts);
|
||||||
|
for (i = 0; i < opts->xopts_nr; i++) {
|
||||||
|
const char *arg = opts->xopts[i];
|
||||||
|
|
||||||
|
skip_prefix(arg, "--", &arg);
|
||||||
|
opts->xopts[i] = xstrdup(arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int read_populate_opts(struct replay_opts *opts)
|
static int read_populate_opts(struct replay_opts *opts)
|
||||||
{
|
{
|
||||||
if (is_rebase_i(opts)) {
|
if (is_rebase_i(opts)) {
|
||||||
|
@ -1381,11 +1403,13 @@ static int read_populate_opts(struct replay_opts *opts)
|
||||||
opts->gpg_sign = xstrdup(buf.buf + 2);
|
opts->gpg_sign = xstrdup(buf.buf + 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
strbuf_release(&buf);
|
|
||||||
|
|
||||||
if (file_exists(rebase_path_verbose()))
|
if (file_exists(rebase_path_verbose()))
|
||||||
opts->verbose = 1;
|
opts->verbose = 1;
|
||||||
|
|
||||||
|
read_strategy_opts(opts, &buf);
|
||||||
|
strbuf_release(&buf);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue