Add command to reset the commit author from the commits panel.

This commit is contained in:
Jens Pfeifle 2022-04-22 16:01:30 +02:00 committed by Jesse Duffield
parent 8247089e53
commit 7c573a5bea
5 changed files with 53 additions and 0 deletions

View file

@ -23,6 +23,11 @@ func (self *CommitCommands) RewordLastCommit(message string) error {
return self.cmd.New("git commit --allow-empty --amend --only -m " + self.cmd.Quote(message)).Run()
}
// Reset the author of the topmost commit.
func (self *CommitCommands) ResetAuthor() error {
return self.cmd.New("git commit --allow-empty --no-edit --amend --reset-author").Run()
}
// ResetToCommit reset to commit
func (self *CommitCommands) ResetToCommit(sha string, strength string, envVars []string) error {
return self.cmd.New(fmt.Sprintf("git reset --%s %s", strength, sha)).

View file

@ -62,6 +62,26 @@ func (self *RebaseCommands) RewordCommitInEditor(commits []*models.Commit, index
return self.PrepareInteractiveRebaseCommand(sha, todo, false), nil
}
func (self *RebaseCommands) ResetCommitAuthor(commits []*models.Commit, index int) error {
if index == 0 {
// we've selected the top commit so no rebase is required
return self.commit.ResetAuthor()
}
err := self.BeginInteractiveRebaseForCommit(commits, index)
if err != nil {
return err
}
// now the selected commit should be our head so we'll amend it with the new author
err = self.commit.ResetAuthor()
if err != nil {
return err
}
return self.ContinueRebase()
}
func (self *RebaseCommands) MoveCommitDown(commits []*models.Commit, index int) error {
// we must ensure that we have at least two commits after the selected one
if len(commits) <= index+2 {