To prevent mistakes when editing a branch, rebase features a knob, rebase.missingCommitsCheck, to warn the user if a commit was dropped. Unfortunately, this check is only effective for the initial edit, which means that if you edit the todo list at a later point of the rebase and drop a commit, no warnings or errors would be issued. This adds the ability to check if commits were dropped when editing the todo list with `--edit-todo', and when resuming a rebase. The first patch moves moves check_todo_list_from_file() and `edit_todo_list_advice' from sequencer.c to rebase-interactive.c so the latter can be used by edit_todo_list() and todo_list_check(). The second patch adds the check to `--edit-todo' and `--continue' and tests. This is based on 393adf7a6f ("sequencer: directly call pick_commits() from complete_action()", 2019-11-24). The tip of this series is tagged as "edit-todo-drop-v4" at https://github.com/agrn/git. Changes since v3: - Set the fake editor in a subshell in the tests to avoid conflicts with pw/post-commit-from-sequencer. - Added the `dropped' file to indicate that the todo list is incorrect (ie. no invalid commands or dropped commits.) - The todo list is copied only if it is correct. - sequencer_continue() checks the todo list for dropped commits only when `dropped' exists. - Added a new test to check that `rebase --continue' does not warn for dropped commits after solving a conflict. This was provided by Phillip Wood. - check_todo_list_from_file() no longer prints `edit_todo_list_advice' if there is dropped commits since todo_list_check() do it now. Alban Gruin (2): sequencer: move check_todo_list_from_file() to rebase-interactive.c rebase-interactive: warn if commit is dropped with `rebase --edit-todo' rebase-interactive.c | 89 ++++++++++++++++++++++++--- rebase-interactive.h | 5 ++ sequencer.c | 51 ++++------------ sequencer.h | 2 +- t/t3404-rebase-interactive.sh | 109 ++++++++++++++++++++++++++++++++++ 5 files changed, 206 insertions(+), 50 deletions(-) Diff-intervalle contre v3: 1: 996045a300 = 1: 996045a300 sequencer: move check_todo_list_from_file() to rebase-interactive.c 2: ba6d27e5b4 < -: ---------- rebase-interactive: warn if commit is dropped with `rebase --edit-todo' -: ---------- > 2: 11b0e1e78c rebase-interactive: warn if commit is dropped with `rebase --edit-todo' -- 2.24.1