From ef99e47d09f4c3d474c8a239c3cb029c06c241c3 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 21 Apr 2024 12:52:02 -0700 Subject: [PATCH] Fix amend to operation not working with non-HEAD merge commit --- pkg/utils/rebase_todo.go | 2 +- pkg/utils/rebase_todo_test.go | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pkg/utils/rebase_todo.go b/pkg/utils/rebase_todo.go index fca1944f1..216d56f26 100644 --- a/pkg/utils/rebase_todo.go +++ b/pkg/utils/rebase_todo.go @@ -235,7 +235,7 @@ func MoveFixupCommitDown(fileName string, originalHash string, fixupHash string, func moveFixupCommitDown(todos []todo.Todo, originalHash string, fixupHash string) ([]todo.Todo, error) { isOriginal := func(t todo.Todo) bool { - return t.Command == todo.Pick && equalHash(t.Commit, originalHash) + return (t.Command == todo.Pick || t.Command == todo.Merge) && equalHash(t.Commit, originalHash) } isFixup := func(t todo.Todo) bool { diff --git a/pkg/utils/rebase_todo_test.go b/pkg/utils/rebase_todo_test.go index 9e7e6ca97..913b055cd 100644 --- a/pkg/utils/rebase_todo_test.go +++ b/pkg/utils/rebase_todo_test.go @@ -284,7 +284,6 @@ func TestRebaseCommands_moveFixupCommitDown(t *testing.T) { expectedErr: nil, }, { - // TODO: is this something we actually want to support? name: "fixup commit is separated from original commit", todos: []todo.Todo{ {Command: todo.Pick, Commit: "original"}, @@ -300,6 +299,22 @@ func TestRebaseCommands_moveFixupCommitDown(t *testing.T) { }, expectedErr: nil, }, + { + name: "fixup commit is separated from original merge commit", + todos: []todo.Todo{ + {Command: todo.Merge, Commit: "original"}, + {Command: todo.Pick, Commit: "other"}, + {Command: todo.Pick, Commit: "fixup"}, + }, + originalHash: "original", + fixupHash: "fixup", + expectedTodos: []todo.Todo{ + {Command: todo.Merge, Commit: "original"}, + {Command: todo.Fixup, Commit: "fixup"}, + {Command: todo.Pick, Commit: "other"}, + }, + expectedErr: nil, + }, { name: "More original hashes than expected", todos: []todo.Todo{