|
|
|
@ -60,6 +60,7 @@ enum empty_type {
@@ -60,6 +60,7 @@ enum empty_type {
|
|
|
|
|
struct rebase_options { |
|
|
|
|
enum rebase_type type; |
|
|
|
|
enum empty_type empty; |
|
|
|
|
const char *default_backend; |
|
|
|
|
const char *state_dir; |
|
|
|
|
struct commit *upstream; |
|
|
|
|
const char *upstream_name; |
|
|
|
@ -100,6 +101,7 @@ struct rebase_options {
@@ -100,6 +101,7 @@ struct rebase_options {
|
|
|
|
|
#define REBASE_OPTIONS_INIT { \ |
|
|
|
|
.type = REBASE_UNSPECIFIED, \ |
|
|
|
|
.empty = EMPTY_UNSPECIFIED, \ |
|
|
|
|
.default_backend = "am", \ |
|
|
|
|
.flags = REBASE_NO_QUIET, \ |
|
|
|
|
.git_am_opts = ARGV_ARRAY_INIT, \ |
|
|
|
|
.git_format_patch_opt = STRBUF_INIT \ |
|
|
|
@ -1272,6 +1274,10 @@ static int rebase_config(const char *var, const char *value, void *data)
@@ -1272,6 +1274,10 @@ static int rebase_config(const char *var, const char *value, void *data)
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!strcmp(var, "rebase.backend")) { |
|
|
|
|
return git_config_string(&opts->default_backend, var, value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return git_default_config(var, value, data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1900,9 +1906,23 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
@@ -1900,9 +1906,23 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
|
|
|
|
|
if (strcmp(options.git_am_opts.argv[i], "-q")) |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
if (is_interactive(&options) && i >= 0) |
|
|
|
|
die(_("cannot combine am options with either " |
|
|
|
|
"interactive or merge options")); |
|
|
|
|
if (i >= 0) { |
|
|
|
|
if (is_interactive(&options)) |
|
|
|
|
die(_("cannot combine am options with either " |
|
|
|
|
"interactive or merge options")); |
|
|
|
|
else |
|
|
|
|
options.type = REBASE_AM; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (options.type == REBASE_UNSPECIFIED) { |
|
|
|
|
if (!strcmp(options.default_backend, "merge")) |
|
|
|
|
options.type = REBASE_MERGE; |
|
|
|
|
else if (!strcmp(options.default_backend, "am")) |
|
|
|
|
options.type = REBASE_AM; |
|
|
|
|
else |
|
|
|
|
die(_("Unknown rebase backend: %s"), |
|
|
|
|
options.default_backend); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
switch (options.type) { |
|
|
|
@ -1915,10 +1935,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
@@ -1915,10 +1935,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
|
|
|
|
|
options.state_dir = apply_dir(); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
/* the default rebase backend is `--am` */ |
|
|
|
|
options.type = REBASE_AM; |
|
|
|
|
options.state_dir = apply_dir(); |
|
|
|
|
break; |
|
|
|
|
BUG("options.type was just set above; should be unreachable."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (options.empty == EMPTY_UNSPECIFIED) { |
|
|
|
|