mirror of
https://github.com/git/git.git
synced 2026-01-27 02:48:32 +00:00
sequencer (rebase -i): allow rescheduling commands
The interactive rebase has the very special magic that a cherry-pick that exits with a status different from 0 and 1 signifies a failure to even record that a cherry-pick was started. This can happen e.g. when a fast-forward fails because it would overwrite untracked files. In that case, we must reschedule the command that we thought we already had at least started successfully. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
@@ -1896,6 +1896,12 @@ static int pick_commits(struct todo_list *todo_list, struct replay_opts *opts)
|
||||
1);
|
||||
res = do_pick_commit(item->command, item->commit,
|
||||
opts, is_final_fixup(todo_list));
|
||||
if (is_rebase_i(opts) && res < 0) {
|
||||
/* Reschedule */
|
||||
todo_list->current--;
|
||||
if (save_todo(todo_list, opts))
|
||||
return -1;
|
||||
}
|
||||
if (item->command == TODO_EDIT) {
|
||||
struct commit *commit = item->commit;
|
||||
if (!res)
|
||||
|
||||
Reference in New Issue
Block a user