mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-06-04 23:37:41 +02:00
Filter out merge commits when generating todo changes in InteractiveRebase
We will need this because under some conditions we are going to use this function to edit a range of commits, and we can't set merge commits to "edit". This corresponds to the code in startInteractiveRebaseWithEdit which has similar logic. It is a bit unfortunate that we will have these two different ways of setting todos to edit: startInteractiveRebaseWithEdit does it after stopping in the rebase, in the Then function of its refresh, but InteractiveRebase does it in the daemon with a ChangeTodoActionsInstruction. It still makes sense though, given how InteractiveRebase works. This not only affects "edit", but also "drop", "fixup", and "squash". Previously, when trying to use these for a range selection that includes a merge commit, they would fail with the cryptic error message "Some todos not found in git-rebase-todo"; now they simply exclude the merge commit. I'm not sure if one is better or worse than the other, and we should probably simply disable the commands when a merge commit is selected, but that's out of scope in this PR.
This commit is contained in:
parent
016d46526c
commit
17bb3970c1
@ -145,11 +145,11 @@ func (self *RebaseCommands) InteractiveRebase(commits []*models.Commit, startIdx
|
|||||||
|
|
||||||
baseHashOrRoot := getBaseHashOrRoot(commits, baseIndex)
|
baseHashOrRoot := getBaseHashOrRoot(commits, baseIndex)
|
||||||
|
|
||||||
changes := lo.Map(commits[startIdx:endIdx+1], func(commit *models.Commit, _ int) daemon.ChangeTodoAction {
|
changes := lo.FilterMap(commits[startIdx:endIdx+1], func(commit *models.Commit, _ int) (daemon.ChangeTodoAction, bool) {
|
||||||
return daemon.ChangeTodoAction{
|
return daemon.ChangeTodoAction{
|
||||||
Hash: commit.Hash,
|
Hash: commit.Hash,
|
||||||
NewAction: action,
|
NewAction: action,
|
||||||
}
|
}, !commit.IsMerge()
|
||||||
})
|
})
|
||||||
|
|
||||||
self.os.LogCommand(logTodoChanges(changes), false)
|
self.os.LogCommand(logTodoChanges(changes), false)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user