summaryrefslogtreecommitdiffstats
path: root/pkg/commands
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/commands')
-rw-r--r--pkg/commands/git_commands/commit.go6
-rw-r--r--pkg/commands/git_commands/patch.go34
-rw-r--r--pkg/commands/git_commands/rebase.go75
3 files changed, 57 insertions, 58 deletions
diff --git a/pkg/commands/git_commands/commit.go b/pkg/commands/git_commands/commit.go
index 5b36d7950..866634013 100644
--- a/pkg/commands/git_commands/commit.go
+++ b/pkg/commands/git_commands/commit.go
@@ -24,9 +24,9 @@ func NewCommitCommands(
}
}
-// RewordLastCommit renames the topmost commit with the given name
-func (self *CommitCommands) RewordLastCommit(name string) error {
- return self.cmd.New("git commit --allow-empty --amend --only -m " + self.cmd.Quote(name)).Run()
+// RewordLastCommit rewords the topmost commit with the given message
+func (self *CommitCommands) RewordLastCommit(message string) error {
+ return self.cmd.New("git commit --allow-empty --amend --only -m " + self.cmd.Quote(message)).Run()
}
// ResetToCommit reset to commit
diff --git a/pkg/commands/git_commands/patch.go b/pkg/commands/git_commands/patch.go
index 2949c6ac2..64661cd71 100644
--- a/pkg/commands/git_commands/patch.go
+++ b/pkg/commands/git_commands/patch.go
@@ -51,7 +51,7 @@ func (self *PatchCommands) DeletePatchesFromCommit(commits []*models.Commit, com
// apply each patch in reverse
if err := self.PatchManager.ApplyPatches(true); err != nil {
- if err := self.rebase.GenericMergeOrRebaseAction("rebase", "abort"); err != nil {
+ if err := self.rebase.AbortRebase(); err != nil {
return err
}
return err
@@ -68,7 +68,7 @@ func (self *PatchCommands) DeletePatchesFromCommit(commits []*models.Commit, com
}
// continue
- return self.rebase.GenericMergeOrRebaseAction("rebase", "continue")
+ return self.rebase.ContinueRebase()
}
func (self *PatchCommands) MovePatchToSelectedCommit(commits []*models.Commit, sourceCommitIdx int, destinationCommitIdx int) error {
@@ -79,7 +79,7 @@ func (self *PatchCommands) MovePatchToSelectedCommit(commits []*models.Commit, s
// apply each patch forward
if err := self.PatchManager.ApplyPatches(false); err != nil {
- if err := self.rebase.GenericMergeOrRebaseAction("rebase", "abort"); err != nil {
+ if err := self.rebase.AbortRebase(); err != nil {
return err
}
return err
@@ -96,7 +96,7 @@ func (self *PatchCommands) MovePatchToSelectedCommit(commits []*models.Commit, s
}
// continue
- return self.rebase.GenericMergeOrRebaseAction("rebase", "continue")
+ return self.rebase.ContinueRebase()
}
if len(commits)-1 < sourceCommitIdx {
@@ -120,18 +120,14 @@ func (self *PatchCommands) MovePatchToSelectedCommit(commits []*models.Commit, s
todo = a + " " + commit.Sha + " " + commit.Name + "\n" + todo
}
- cmdObj, err := self.rebase.PrepareInteractiveRebaseCommand(commits[baseIndex].Sha, todo, true)
+ err := self.rebase.PrepareInteractiveRebaseCommand(commits[baseIndex].Sha, todo, true).Run()
if err != nil {
return err
}
- if err := cmdObj.Run(); err != nil {
- return err
- }
-
// apply each patch in reverse
if err := self.PatchManager.ApplyPatches(true); err != nil {
- if err := self.rebase.GenericMergeOrRebaseAction("rebase", "abort"); err != nil {
+ if err := self.rebase.AbortRebase(); err != nil {
return err
}
return err
@@ -150,7 +146,7 @@ func (self *PatchCommands) MovePatchToSelectedCommit(commits []*models.Commit, s
// now we should be up to the destination, so let's apply forward these patches to that.
// ideally we would ensure we're on the right commit but I'm not sure if that check is necessary
if err := self.PatchManager.ApplyPatches(false); err != nil {
- if err := self.rebase.GenericMergeOrRebaseAction("rebase", "abort"); err != nil {
+ if err := self.rebase.AbortRebase(); err != nil {
return err
}
return err
@@ -166,10 +162,10 @@ func (self *PatchCommands) MovePatchToSelectedCommit(commits []*models.Commit, s
return nil
}
- return self.rebase.GenericMergeOrRebaseAction("rebase", "continue")
+ return self.rebase.ContinueRebase()
}
- return self.rebase.GenericMergeOrRebaseAction("rebase", "continue")
+ return self.rebase.ContinueRebase()
}
func (self *PatchCommands) MovePatchIntoIndex(commits []*models.Commit, commitIdx int, stash bool) error {
@@ -185,7 +181,7 @@ func (self *PatchCommands) MovePatchIntoIndex(commits []*models.Commit, commitId
if err := self.PatchManager.ApplyPatches(true); err != nil {
if self.status.WorkingTreeState() == enums.REBASE_MODE_REBASING {
- if err := self.rebase.GenericMergeOrRebaseAction("rebase", "abort"); err != nil {
+ if err := self.rebase.AbortRebase(); err != nil {
return err
}
}
@@ -205,7 +201,7 @@ func (self *PatchCommands) MovePatchIntoIndex(commits []*models.Commit, commitId
// add patches to index
if err := self.PatchManager.ApplyPatches(false); err != nil {
if self.status.WorkingTreeState() == enums.REBASE_MODE_REBASING {
- if err := self.rebase.GenericMergeOrRebaseAction("rebase", "abort"); err != nil {
+ if err := self.rebase.AbortRebase(); err != nil {
return err
}
}
@@ -222,7 +218,7 @@ func (self *PatchCommands) MovePatchIntoIndex(commits []*models.Commit, commitId
return nil
}
- return self.rebase.GenericMergeOrRebaseAction("rebase", "continue")
+ return self.rebase.ContinueRebase()
}
func (self *PatchCommands) PullPatchIntoNewCommit(commits []*models.Commit, commitIdx int) error {
@@ -231,7 +227,7 @@ func (self *PatchCommands) PullPatchIntoNewCommit(commits []*models.Commit, comm
}
if err := self.PatchManager.ApplyPatches(true); err != nil {
- if err := self.rebase.GenericMergeOrRebaseAction("rebase", "abort"); err != nil {
+ if err := self.rebase.AbortRebase(); err != nil {
return err
}
return err
@@ -244,7 +240,7 @@ func (self *PatchCommands) PullPatchIntoNewCommit(commits []*models.Commit, comm
// add patches to index
if err := self.PatchManager.ApplyPatches(false); err != nil {
- if err := self.rebase.GenericMergeOrRebaseAction("rebase", "abort"); err != nil {
+ if err := self.rebase.AbortRebase(); err != nil {
return err
}
return err
@@ -262,5 +258,5 @@ func (self *PatchCommands) PullPatchIntoNewCommit(commits []*models.Commit, comm
}
self.PatchManager.Reset()
- return self.rebase.GenericMergeOrRebaseAction("rebase", "continue")
+ return self.rebase.ContinueRebase()
}
diff --git a/pkg/commands/git_commands/rebase.go b/pkg/commands/git_commands/rebase.go
index 08c8b4cb5..b939b34f5 100644
--- a/pkg/commands/git_commands/rebase.go
+++ b/pkg/commands/git_commands/rebase.go
@@ -45,13 +45,33 @@ func NewRebaseCommands(
}
}
-func (self *RebaseCommands) RewordCommit(commits []*models.Commit, index int) (oscommands.ICmdObj, error) {
+func (self *RebaseCommands) RewordCommit(commits []*models.Commit, index int, message string) error {
+ if index == 0 {
+ // we've selected the top commit so no rebase is required
+ return self.commit.RewordLastCommit(message)
+ }
+
+ 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 message
+ err = self.commit.RewordLastCommit(message)
+ if err != nil {
+ return err
+ }
+
+ return self.ContinueRebase()
+}
+
+func (self *RebaseCommands) RewordCommitInEditor(commits []*models.Commit, index int) (oscommands.ICmdObj, error) {
todo, sha, err := self.GenerateGenericRebaseTodo(commits, index, "reword")
if err != nil {
return nil, err
}
- return self.PrepareInteractiveRebaseCommand(sha, todo, false)
+ return self.PrepareInteractiveRebaseCommand(sha, todo, false), nil
}
func (self *RebaseCommands) MoveCommitDown(commits []*models.Commit, index int) error {
@@ -67,12 +87,7 @@ func (self *RebaseCommands) MoveCommitDown(commits []*models.Commit, index int)
todo = "pick " + commit.Sha + " " + commit.Name + "\n" + todo
}
- cmdObj, err := self.PrepareInteractiveRebaseCommand(commits[index+2].Sha, todo, true)
- if err != nil {
- return err
- }
-
- return cmdObj.Run()
+ return self.PrepareInteractiveRebaseCommand(commits[index+2].Sha, todo, true).Run()
}
func (self *RebaseCommands) InteractiveRebase(commits []*models.Commit, index int, action string) error {
@@ -81,18 +96,13 @@ func (self *RebaseCommands) InteractiveRebase(commits []*models.Commit, index in
return err
}
- cmdObj, err := self.PrepareInteractiveRebaseCommand(sha, todo, true)
- if err != nil {
- return err
- }
-
- return cmdObj.Run()
+ return self.PrepareInteractiveRebaseCommand(sha, todo, true).Run()
}
// PrepareInteractiveRebaseCommand returns the cmd for an interactive rebase
// we tell git to run lazygit to edit the todo list, and we pass the client
// lazygit a todo string to write to the todo file
-func (self *RebaseCommands) PrepareInteractiveRebaseCommand(baseSha string, todo string, overrideEditor bool) (oscommands.ICmdObj, error) {
+func (self *RebaseCommands) PrepareInteractiveRebaseCommand(baseSha string, todo string, overrideEditor bool) oscommands.ICmdObj {
ex := oscommands.GetLazygitPath()
debug := "FALSE"
@@ -125,7 +135,7 @@ func (self *RebaseCommands) PrepareInteractiveRebaseCommand(baseSha string, todo
cmdObj.AddEnvVars("GIT_EDITOR=" + ex)
}
- return cmdObj, nil
+ return cmdObj
}
func (self *RebaseCommands) GenerateGenericRebaseTodo(commits []*models.Commit, actionIndex int, action string) (string, string, error) {
@@ -235,7 +245,7 @@ func (self *RebaseCommands) SquashAllAboveFixupCommits(sha string) error {
}
// BeginInteractiveRebaseForCommit starts an interactive rebase to edit the current
-// commit and pick all others. After this you'll want to call `self.GenericMergeOrRebaseAction("rebase", "continue")`
+// commit and pick all others. After this you'll want to call `self.ContinueRebase()
func (self *RebaseCommands) BeginInteractiveRebaseForCommit(commits []*models.Commit, commitIndex int) error {
if len(commits)-1 < commitIndex {
return errors.New("index outside of range of commits")
@@ -253,28 +263,26 @@ func (self *RebaseCommands) BeginInteractiveRebaseForCommit(commits []*models.Co
return err
}
- cmdObj, err := self.PrepareInteractiveRebaseCommand(sha, todo, true)
- if err != nil {
- return err
- }
-
- return cmdObj.Run()
+ return self.PrepareInteractiveRebaseCommand(sha, todo, true).Run()
}
// RebaseBranch interactive rebases onto a branch
func (self *RebaseCommands) RebaseBranch(branchName string) error {
- cmdObj, err := self.PrepareInteractiveRebaseCommand(branchName, "", false)
- if err != nil {
- return err
- }
-
- return cmdObj.Run()
+ return self.PrepareInteractiveRebaseCommand(branchName, "", false).Run()
}
func (self *RebaseCommands) GenericMergeOrRebaseActionCmdObj(commandType string, command string) oscommands.ICmdObj {
return self.cmd.New("git " + commandType + " --" + command)
}
+func (self *RebaseCommands) ContinueRebase() error {
+ return self.GenericMergeOrRebaseAction("rebase", "continue")
+}
+
+func (self *RebaseCommands) AbortRebase() error {
+ return self.GenericMergeOrRebaseAction("rebase", "abort")
+}
+
// GenericMerge takes a commandType of "merge" or "rebase" and a command of "abort", "skip" or "continue"
// By default we skip the editor in the case where a commit will be made
func (self *RebaseCommands) GenericMergeOrRebaseAction(commandType string, command string) error {
@@ -337,7 +345,7 @@ func (self *RebaseCommands) DiscardOldFileChanges(commits []*models.Commit, comm
}
// continue
- return self.GenericMergeOrRebaseAction("rebase", "continue")
+ return self.ContinueRebase()
}
// CherryPickCommits begins an interactive rebase with the given shas being cherry picked onto HEAD
@@ -347,10 +355,5 @@ func (self *RebaseCommands) CherryPickCommits(commits []*models.Commit) error {
todo = "pick " + commit.Sha + " " + commit.Name + "\n" + todo
}
- cmdObj, err := self.PrepareInteractiveRebaseCommand("HEAD", todo, false)
- if err != nil {
- return err
- }
-
- return cmdObj.Run()
+ return self.PrepareInteractiveRebaseCommand("HEAD", todo, false).Run()
}