pr-1492/phillipwood/rebase-dont-write-done-when-rescheduling-v3
tagged this
01 Aug 15:23
This series fixes several bugs in the way we handle a commit cannot be picked because it would overwrite an untracked file. * after a failed pick "git rebase --continue" will happily commit any staged changes even though no commit was picked. * the commit of the failed pick is recorded as rewritten even though no commit was picked. * the "done" file used by "git status" to show the recently executed commands contains an incorrect entry. Thanks to Eric, Glen and Junio for their comments on v2. Here are the changes since v2: Patch 1 - Reworded the commit message. Patch 2 - Reworded the commit message, added a test and fixed error message pointed out by Glen. Patch 3 - New cleanup. Patch 4 - Reworded the commit message, now only increments todo_list->current if there is no error. Patch 5 - Swapped with next patch. Reworded the commit message, stopped testing implementation (suggested by Glen). Expanded post-rewrite hook test. Patch 6 - Reworded the commit message, now uses the message file rather than the author script to check if "rebase --continue" should commit staged changes. Junio suggested using a separate file for this but I think that would end up being more involved as we'd need to be careful about creating and removing it. Patch 7 - Reworded the commit message. Thanks for the comments on V1, this series has now grown somewhat. Previously I was worried that refactoring would change the behavior, but having thought about it the current behavior is wrong and should be changed. Changes since V1: Rebased onto master to avoid a conflict with ab/remove-implicit-use-of-the-repository * Patches 1-3 are new preparatory changes * Patches 4 & 5 are new and fix the first two issues listed above. * Patch 6 is the old patch 1 which has been rebased and the commit message reworded. It fixes the last issues listed above. Phillip Wood (7): rebase -i: move unlink() calls rebase -i: remove patch file after conflict resolution sequencer: use rebase_path_message() sequencer: factor out part of pick_commits() rebase: fix rewritten list for failed pick rebase --continue: refuse to commit after failed command rebase -i: fix adding failed command to the todo list sequencer.c | 179 ++++++++++++++++++---------------- t/t3404-rebase-interactive.sh | 53 +++++++--- t/t3418-rebase-continue.sh | 18 ++++ t/t3430-rebase-merges.sh | 30 ++++-- t/t5407-post-rewrite-hook.sh | 48 +++++++++ 5 files changed, 225 insertions(+), 103 deletions(-) base-commit: a80be152923a46f04a06bade7bcc72870e46ca09 Submitted-As: https://lore.kernel.org/git/pull.1492.v3.git.1690903412.gitgitgadget@gmail.com In-Reply-To: https://lore.kernel.org/git/pull.1492.git.1679237337683.gitgitgadget@gmail.com In-Reply-To: https://lore.kernel.org/git/pull.1492.v2.git.1682089074.gitgitgadget@gmail.com
Assets 2
-
2023-08-01T15:23:32Z -
2023-08-01T15:23:32Z - Loading