diff --git a/pkg/commands/git_commands/commit.go b/pkg/commands/git_commands/commit.go index 4153dfeb909..1ff7c095f1d 100644 --- a/pkg/commands/git_commands/commit.go +++ b/pkg/commands/git_commands/commit.go @@ -117,7 +117,7 @@ func (self *CommitCommands) CommitInEditorWithMessageFileCmdObj(tmpMessageFile s } // RewordLastCommit rewords the topmost commit with the given message -func (self *CommitCommands) RewordLastCommit(summary string, description string) error { +func (self *CommitCommands) RewordLastCommit(summary string, description string) oscommands.ICmdObj { messageArgs := self.commitMessageArgs(summary, description) cmdArgs := NewGitCmd("commit"). @@ -125,7 +125,7 @@ func (self *CommitCommands) RewordLastCommit(summary string, description string) Arg(messageArgs...). ToArgv() - return self.cmd.New(cmdArgs).Run() + return self.cmd.New(cmdArgs) } func (self *CommitCommands) commitMessageArgs(summary string, description string) []string { diff --git a/pkg/commands/git_commands/commit_test.go b/pkg/commands/git_commands/commit_test.go index 239d7fa8f4c..3e2c9e664f4 100644 --- a/pkg/commands/git_commands/commit_test.go +++ b/pkg/commands/git_commands/commit_test.go @@ -33,7 +33,7 @@ func TestCommitRewordCommit(t *testing.T) { t.Run(s.testName, func(t *testing.T) { instance := buildCommitCommands(commonDeps{runner: s.runner}) - assert.NoError(t, instance.RewordLastCommit(s.summary, s.description)) + assert.NoError(t, instance.RewordLastCommit(s.summary, s.description).Run()) s.runner.CheckForMissingCalls() }) } diff --git a/pkg/commands/git_commands/rebase.go b/pkg/commands/git_commands/rebase.go index 59c2c6833c0..56537e92fcc 100644 --- a/pkg/commands/git_commands/rebase.go +++ b/pkg/commands/git_commands/rebase.go @@ -35,9 +35,8 @@ func NewRebaseCommands( } func (self *RebaseCommands) RewordCommit(commits []*models.Commit, index int, summary string, description string) error { - if models.IsHeadCommit(commits, index) { - // we've selected the top commit so no rebase is required - return self.commit.RewordLastCommit(summary, description) + if self.config.UsingGpg() { + return errors.New(self.Tr.DisabledForGPG) } err := self.BeginInteractiveRebaseForCommit(commits, index, false) @@ -46,7 +45,7 @@ func (self *RebaseCommands) RewordCommit(commits []*models.Commit, index int, su } // now the selected commit should be our head so we'll amend it with the new message - err = self.commit.RewordLastCommit(summary, description) + err = self.commit.RewordLastCommit(summary, description).Run() if err != nil { return err } diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index f95062fdbe3..913601b5c7f 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -400,7 +400,16 @@ func (self *LocalCommitsController) switchFromCommitMessagePanelToEditor(filepat } func (self *LocalCommitsController) handleReword(summary string, description string) error { - err := self.c.Git().Rebase.RewordCommit(self.c.Model().Commits, self.c.Contexts().LocalCommits.GetSelectedLineIdx(), summary, description) + var err error + + if models.IsHeadCommit(self.c.Model().Commits, self.c.Contexts().LocalCommits.GetSelectedLineIdx()) { + // we've selected the top commit so no rebase is required + err = self.c.Helpers().GPG.WithGpgHandling(self.c.Git().Commit.RewordLastCommit(summary, description), + self.c.Tr.CommittingStatus, nil) + } else { + err = self.c.Git().Rebase.RewordCommit(self.c.Model().Commits, self.c.Contexts().LocalCommits.GetSelectedLineIdx(), summary, description) + } + if err != nil { return err }