[PATCH v2 12/34] sequencer (rebase -i): skip some revert/cherry-pick specific code path
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Dec 13, 2016, 15:30 UTC
- Message-ID
- <09d0f53cf310c6a81ac6ffabe90f45aeeec39d9b.1481642927.git.johannes.schindelin@gmx.de>
- In-Reply-To
- <cover.1481642927.git.johannes.schindelin@gmx.de>
When a cherry-pick continues without a "todo script", the intention is simply to pick a single commit.
However, when an interactive rebase is continued without a "todo script", it means that the last command has been completed and that we now need to clean up.
This commit guards the revert/cherry-pick specific steps so that they are not executed in rebase -i mode.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- sequencer.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/sequencer.c b/sequencer.c index abffaf3b40..4ceb6f3ac5 100644 --- a/sequencer.c +++ b/sequencer.c @@ -1882,25 +1882,28 @@ int sequencer_continue(struct replay_opts *opts) if (commit_staged_changes(opts)) return -1; } - if (!file_exists(get_todo_path(opts))) + else if (!file_exists(get_todo_path(opts))) return continue_single_pick(); if (read_populate_opts(opts)) return -1; if ((res = read_populate_todo(&todo_list, opts))) goto release_todo_list; - /* Verify that the conflict has been resolved */ - if (file_exists(git_path_cherry_pick_head()) || - file_exists(git_path_revert_head())) { - res = continue_single_pick(); - if (res) + if (!is_rebase_i(opts)) { + /* Verify that the conflict has been resolved */ + if (file_exists(git_path_cherry_pick_head()) || + file_exists(git_path_revert_head())) { + res = continue_single_pick(); + if (res) + goto release_todo_list; + } + if (index_differs_from("HEAD", 0, 0)) { + res = error_dirty_index(opts); goto release_todo_list; + } + todo_list.current++; } - if (index_differs_from("HEAD", 0, 0)) { - res = error_dirty_index(opts); - goto release_todo_list; - } - todo_list.current++; + res = pick_commits(&todo_list, opts); release_todo_list: todo_list_release(&todo_list);
-- 2.11.0.rc3.windows.1