Merge branch 'ab/rebase-no-reschedule-failed-exec'
"git rebase --[no-]reschedule-failed-exec" did not work well with its configuration variable, which has been corrected. * ab/rebase-no-reschedule-failed-exec: rebase: don't override --no-reschedule-failed-exec with config rebase tests: camel-case rebase.rescheduleFailedExec consistently
This commit is contained in:
commit
0377ac98dc
@ -617,6 +617,14 @@ See also INCOMPATIBLE OPTIONS below.
|
||||
--no-reschedule-failed-exec::
|
||||
Automatically reschedule `exec` commands that failed. This only makes
|
||||
sense in interactive mode (or when an `--exec` option was provided).
|
||||
+
|
||||
Even though this option applies once a rebase is started, it's set for
|
||||
the whole rebase at the start based on either the
|
||||
`rebase.rescheduleFailedExec` configuration (see linkgit:git-config[1]
|
||||
or "CONFIGURATION" below) or whether this option is
|
||||
provided. Otherwise an explicit `--no-reschedule-failed-exec` at the
|
||||
start would be overridden by the presence of
|
||||
`rebase.rescheduleFailedExec=true` configuration.
|
||||
|
||||
INCOMPATIBLE OPTIONS
|
||||
--------------------
|
||||
|
@ -164,6 +164,7 @@ static GIT_PATH_FUNC(rebase_path_strategy, "rebase-merge/strategy")
|
||||
static GIT_PATH_FUNC(rebase_path_strategy_opts, "rebase-merge/strategy_opts")
|
||||
static GIT_PATH_FUNC(rebase_path_allow_rerere_autoupdate, "rebase-merge/allow_rerere_autoupdate")
|
||||
static GIT_PATH_FUNC(rebase_path_reschedule_failed_exec, "rebase-merge/reschedule-failed-exec")
|
||||
static GIT_PATH_FUNC(rebase_path_no_reschedule_failed_exec, "rebase-merge/no-reschedule-failed-exec")
|
||||
static GIT_PATH_FUNC(rebase_path_drop_redundant_commits, "rebase-merge/drop_redundant_commits")
|
||||
static GIT_PATH_FUNC(rebase_path_keep_redundant_commits, "rebase-merge/keep_redundant_commits")
|
||||
|
||||
@ -2868,6 +2869,8 @@ static int read_populate_opts(struct replay_opts *opts)
|
||||
|
||||
if (file_exists(rebase_path_reschedule_failed_exec()))
|
||||
opts->reschedule_failed_exec = 1;
|
||||
else if (file_exists(rebase_path_no_reschedule_failed_exec()))
|
||||
opts->reschedule_failed_exec = 0;
|
||||
|
||||
if (file_exists(rebase_path_drop_redundant_commits()))
|
||||
opts->drop_redundant_commits = 1;
|
||||
@ -2968,6 +2971,8 @@ int write_basic_state(struct replay_opts *opts, const char *head_name,
|
||||
write_file(rebase_path_ignore_date(), "%s", "");
|
||||
if (opts->reschedule_failed_exec)
|
||||
write_file(rebase_path_reschedule_failed_exec(), "%s", "");
|
||||
else
|
||||
write_file(rebase_path_no_reschedule_failed_exec(), "%s", "");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -282,12 +282,35 @@ test_expect_success '--reschedule-failed-exec' '
|
||||
test_i18ngrep "has been rescheduled" err
|
||||
'
|
||||
|
||||
test_expect_success 'rebase.reschedulefailedexec only affects `rebase -i`' '
|
||||
test_config rebase.reschedulefailedexec true &&
|
||||
test_expect_success 'rebase.rescheduleFailedExec only affects `rebase -i`' '
|
||||
test_config rebase.rescheduleFailedExec true &&
|
||||
test_must_fail git rebase -x false HEAD^ &&
|
||||
grep "^exec false" .git/rebase-merge/git-rebase-todo &&
|
||||
git rebase --abort &&
|
||||
git rebase HEAD^
|
||||
'
|
||||
|
||||
test_expect_success 'rebase.rescheduleFailedExec=true & --no-reschedule-failed-exec' '
|
||||
test_when_finished "git rebase --abort" &&
|
||||
test_config rebase.rescheduleFailedExec true &&
|
||||
test_must_fail git rebase -x false --no-reschedule-failed-exec HEAD~2 &&
|
||||
test_must_fail git rebase --continue 2>err &&
|
||||
! grep "has been rescheduled" err
|
||||
'
|
||||
|
||||
test_expect_success 'new rebase.rescheduleFailedExec=true setting in an ongoing rebase is ignored' '
|
||||
test_when_finished "git rebase --abort" &&
|
||||
test_must_fail git rebase -x false HEAD~2 &&
|
||||
test_config rebase.rescheduleFailedExec true &&
|
||||
test_must_fail git rebase --continue 2>err &&
|
||||
! grep "has been rescheduled" err
|
||||
'
|
||||
|
||||
test_expect_success 'there is no --no-reschedule-failed-exec in an ongoing rebase' '
|
||||
test_when_finished "git rebase --abort" &&
|
||||
test_must_fail git rebase -x false HEAD~2 &&
|
||||
test_expect_code 129 git rebase --continue --no-reschedule-failed-exec &&
|
||||
test_expect_code 129 git rebase --edit-todo --no-reschedule-failed-exec
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user