diff options
Diffstat (limited to 'pkg/gui/controllers/helpers/cherry_pick_helper.go')
-rw-r--r-- | pkg/gui/controllers/helpers/cherry_pick_helper.go | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/pkg/gui/controllers/helpers/cherry_pick_helper.go b/pkg/gui/controllers/helpers/cherry_pick_helper.go index 61a37220b..137d0626d 100644 --- a/pkg/gui/controllers/helpers/cherry_pick_helper.go +++ b/pkg/gui/controllers/helpers/cherry_pick_helper.go @@ -90,15 +90,36 @@ func (self *CherryPickHelper) Paste() error { if err := self.c.Git().Rebase.CherryPickCommitsDuringRebase(self.getData().CherryPickedCommits); err != nil { return err } - return self.c.Refresh(types.RefreshOptions{ + err = self.c.Refresh(types.RefreshOptions{ Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS}, }) + if err != nil { + return err + } + + return self.Reset() } return self.c.WithWaitingStatus(self.c.Tr.CherryPickingStatus, func(gocui.Task) error { self.c.LogAction(self.c.Tr.Actions.CherryPick) err := self.c.Git().Rebase.CherryPickCommits(self.getData().CherryPickedCommits) - return self.rebaseHelper.CheckMergeOrRebase(err) + err = self.rebaseHelper.CheckMergeOrRebase(err) + if err != nil { + return err + } + + // If we're in an interactive rebase at this point, it must + // be because there were conflicts. Don't clear the copied + // commits in this case, since we might want to abort and + // try pasting them again. + isInRebase, err = self.c.Git().Status.IsInInteractiveRebase() + if err != nil { + return err + } + if !isInRebase { + return self.Reset() + } + return nil }) }, }) |