mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-11 20:36:03 +02:00
Remove the "Select parent commit" prompt when reverting a merge commit
In pretty much 100% of the cases, you want to use -m1, so spare users the complexity of a confusing prompt. See https://public-inbox.org/git/e60a8b1a-98c8-4ac7-b966-ff9635bb781d@haller-berlin.de/ for some discussion.
This commit is contained in:
parent
c13c6356e3
commit
f14a3cdd46
4 changed files with 12 additions and 51 deletions
|
@ -285,15 +285,14 @@ func (self *CommitCommands) ShowFileContentCmdObj(hash string, filePath string)
|
||||||
return self.cmd.New(cmdArgs).DontLog()
|
return self.cmd.New(cmdArgs).DontLog()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Revert reverts the selected commit by hash
|
// Revert reverts the selected commit by hash. If isMerge is true, we'll pass -m 1
|
||||||
func (self *CommitCommands) Revert(hash string) error {
|
// to say we want to revert the first parent of the merge commit, which is the one
|
||||||
cmdArgs := NewGitCmd("revert").Arg(hash).ToArgv()
|
// people want in 99.9% of cases. In current git versions we could unconditionally
|
||||||
|
// pass -m 1 even for non-merge commits, but older versions of git choke on it.
|
||||||
return self.cmd.New(cmdArgs).Run()
|
func (self *CommitCommands) Revert(hash string, isMerge bool) error {
|
||||||
}
|
cmdArgs := NewGitCmd("revert").
|
||||||
|
Arg(hash).
|
||||||
func (self *CommitCommands) RevertMerge(hash string, parentNumber int) error {
|
ArgIf(isMerge, "-m", "1").
|
||||||
cmdArgs := NewGitCmd("revert").Arg(hash, "-m", fmt.Sprintf("%d", parentNumber)).
|
|
||||||
ToArgv()
|
ToArgv()
|
||||||
|
|
||||||
return self.cmd.New(cmdArgs).Run()
|
return self.cmd.New(cmdArgs).Run()
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/go-errors/errors"
|
"github.com/go-errors/errors"
|
||||||
|
@ -859,10 +858,6 @@ func (self *LocalCommitsController) addCoAuthor(start, end int) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *LocalCommitsController) revert(commit *models.Commit) error {
|
func (self *LocalCommitsController) revert(commit *models.Commit) error {
|
||||||
if commit.IsMerge() {
|
|
||||||
return self.createRevertMergeCommitMenu(commit)
|
|
||||||
}
|
|
||||||
|
|
||||||
self.c.Confirm(types.ConfirmOpts{
|
self.c.Confirm(types.ConfirmOpts{
|
||||||
Title: self.c.Tr.Actions.RevertCommit,
|
Title: self.c.Tr.Actions.RevertCommit,
|
||||||
Prompt: utils.ResolvePlaceholderString(
|
Prompt: utils.ResolvePlaceholderString(
|
||||||
|
@ -873,7 +868,7 @@ func (self *LocalCommitsController) revert(commit *models.Commit) error {
|
||||||
HandleConfirm: func() error {
|
HandleConfirm: func() error {
|
||||||
self.c.LogAction(self.c.Tr.Actions.RevertCommit)
|
self.c.LogAction(self.c.Tr.Actions.RevertCommit)
|
||||||
return self.c.WithWaitingStatusSync(self.c.Tr.RevertingStatus, func() error {
|
return self.c.WithWaitingStatusSync(self.c.Tr.RevertingStatus, func() error {
|
||||||
result := self.c.Git().Commit.Revert(commit.Hash)
|
result := self.c.Git().Commit.Revert(commit.Hash, commit.IsMerge())
|
||||||
if err := self.c.Helpers().MergeAndRebase.CheckMergeOrRebase(result); err != nil {
|
if err := self.c.Helpers().MergeAndRebase.CheckMergeOrRebase(result); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -885,32 +880,6 @@ func (self *LocalCommitsController) revert(commit *models.Commit) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *LocalCommitsController) createRevertMergeCommitMenu(commit *models.Commit) error {
|
|
||||||
menuItems := make([]*types.MenuItem, len(commit.Parents))
|
|
||||||
for i, parentHash := range commit.Parents {
|
|
||||||
message, err := self.c.Git().Commit.GetCommitMessageFirstLine(parentHash)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
menuItems[i] = &types.MenuItem{
|
|
||||||
Label: fmt.Sprintf("%s: %s", utils.SafeTruncate(parentHash, 8), message),
|
|
||||||
OnPress: func() error {
|
|
||||||
parentNumber := i + 1
|
|
||||||
self.c.LogAction(self.c.Tr.Actions.RevertCommit)
|
|
||||||
return self.c.WithWaitingStatusSync(self.c.Tr.RevertingStatus, func() error {
|
|
||||||
if err := self.c.Git().Commit.RevertMerge(commit.Hash, parentNumber); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return self.afterRevertCommit()
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return self.c.Menu(types.CreateMenuOptions{Title: self.c.Tr.SelectParentCommitForMerge, Items: menuItems})
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *LocalCommitsController) afterRevertCommit() error {
|
func (self *LocalCommitsController) afterRevertCommit() error {
|
||||||
self.context().MoveSelection(1)
|
self.context().MoveSelection(1)
|
||||||
return self.c.Refresh(types.RefreshOptions{
|
return self.c.Refresh(types.RefreshOptions{
|
||||||
|
|
|
@ -727,7 +727,6 @@ type TranslationSet struct {
|
||||||
FocusCommandLog string
|
FocusCommandLog string
|
||||||
CommandLogHeader string
|
CommandLogHeader string
|
||||||
RandomTip string
|
RandomTip string
|
||||||
SelectParentCommitForMerge string
|
|
||||||
ToggleWhitespaceInDiffView string
|
ToggleWhitespaceInDiffView string
|
||||||
ToggleWhitespaceInDiffViewTooltip string
|
ToggleWhitespaceInDiffViewTooltip string
|
||||||
IgnoreWhitespaceDiffViewSubTitle string
|
IgnoreWhitespaceDiffViewSubTitle string
|
||||||
|
@ -1795,7 +1794,6 @@ func EnglishTranslationSet() *TranslationSet {
|
||||||
FocusCommandLog: "Focus command log",
|
FocusCommandLog: "Focus command log",
|
||||||
CommandLogHeader: "You can hide/focus this panel by pressing '%s'\n",
|
CommandLogHeader: "You can hide/focus this panel by pressing '%s'\n",
|
||||||
RandomTip: "Random tip",
|
RandomTip: "Random tip",
|
||||||
SelectParentCommitForMerge: "Select parent commit for merge",
|
|
||||||
ToggleWhitespaceInDiffView: "Toggle whitespace",
|
ToggleWhitespaceInDiffView: "Toggle whitespace",
|
||||||
ToggleWhitespaceInDiffViewTooltip: "Toggle whether or not whitespace changes are shown in the diff view.",
|
ToggleWhitespaceInDiffViewTooltip: "Toggle whether or not whitespace changes are shown in the diff view.",
|
||||||
IgnoreWhitespaceDiffViewSubTitle: "(ignoring whitespace)",
|
IgnoreWhitespaceDiffViewSubTitle: "(ignoring whitespace)",
|
||||||
|
|
|
@ -21,14 +21,9 @@ var RevertMerge = NewIntegrationTest(NewIntegrationTestArgs{
|
||||||
).
|
).
|
||||||
Press(keys.Commits.RevertCommit)
|
Press(keys.Commits.RevertCommit)
|
||||||
|
|
||||||
t.ExpectPopup().Menu().
|
t.ExpectPopup().Confirmation().
|
||||||
Title(Equals("Select parent commit for merge")).
|
Title(Equals("Revert commit")).
|
||||||
Lines(
|
Content(MatchesRegexp(`Are you sure you want to revert \w+?`)).
|
||||||
Contains("first change"),
|
|
||||||
Contains("second-change-branch unrelated change"),
|
|
||||||
Contains("Cancel"),
|
|
||||||
).
|
|
||||||
Select(Contains("first change")).
|
|
||||||
Confirm()
|
Confirm()
|
||||||
|
|
||||||
t.Views().Commits().IsFocused().
|
t.Views().Commits().IsFocused().
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue