[PATCH v4 0/2] rebase -i: extend rebase.missingCommitsCheck
- From
Alban Gruin <alban.gruin@gmail.com>
- Date
- Jan 11, 2020, 17:39 UTC
- Message-ID
- <20200111173917.15690-1-alban.gruin@gmail.com>
- In-Reply-To
- <20191202234759.26201-1-alban.gruin@gmail.com>
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