When you call `git rebase --root' we are not interested in the rebase.forkpoint configuration. The two options are not to be combined. Because the implementation checks if the configured value for using a forkpoint > 0 I've opted to give the configured forkpoint the value 2. If the user supplies --fork-point on the command line this has a value of 1. Now we can make a distinction between user input and the configured value of rebase.forkpoint. Signed-off-by: Wesley Schwengle <wesleys@xxxxxxxxxxxxxxx> --- builtin/rebase.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/builtin/rebase.c b/builtin/rebase.c index 50cb85751f..2108001600 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -824,7 +824,7 @@ static int rebase_config(const char *var, const char *value, } if (!strcmp(var, "rebase.forkpoint")) { - opts->fork_point = git_config_bool(var, value) ? -1 : 0; + opts->fork_point = git_config_bool(var, value) ? 2 : 0; return 0; } @@ -1264,8 +1264,12 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) if (options.fork_point < 0) options.fork_point = 0; } - if (options.root && options.fork_point > 0) + if (options.root && options.fork_point == 1) { die(_("options '%s' and '%s' cannot be used together"), "--root", "--fork-point"); + } else if (options.root && options.fork_point > 1) { + options.fork_point = 0; + } + if (options.action != ACTION_NONE && !in_progress) die(_("No rebase in progress?")); -- 2.42.0.103.g5622fd1409.dirty