1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-21 12:16:54 +02:00

Always show rebase menu, even when rebasing is not possible

Instead, disable the individual entries in the menu.

This is necessary because we are going to add another entry to the menu that is
independent of the selected branch.
This commit is contained in:
Stefan Haller 2024-05-03 19:30:31 +02:00
parent ca6d88080c
commit ddf5e24499
2 changed files with 20 additions and 27 deletions

View File

@ -100,15 +100,13 @@ func (self *BranchesController) GetKeybindings(opts types.KeybindingsOpts) []*ty
DisplayOnScreen: true, DisplayOnScreen: true,
}, },
{ {
Key: opts.GetKey(opts.Config.Branches.RebaseBranch), Key: opts.GetKey(opts.Config.Branches.RebaseBranch),
Handler: opts.Guards.OutsideFilterMode(self.rebase), Handler: opts.Guards.OutsideFilterMode(self.withItem(self.rebase)),
GetDisabledReason: self.require( GetDisabledReason: self.require(self.singleItemSelected()),
self.singleItemSelected(self.notRebasingOntoSelf), Description: self.c.Tr.RebaseBranch,
), Tooltip: self.c.Tr.RebaseBranchTooltip,
Description: self.c.Tr.RebaseBranch, OpensMenu: true,
Tooltip: self.c.Tr.RebaseBranchTooltip, DisplayOnScreen: true,
OpensMenu: true,
DisplayOnScreen: true,
}, },
{ {
Key: opts.GetKey(opts.Config.Branches.MergeIntoCurrentBranch), Key: opts.GetKey(opts.Config.Branches.MergeIntoCurrentBranch),
@ -634,19 +632,8 @@ func (self *BranchesController) merge() error {
return self.c.Helpers().MergeAndRebase.MergeRefIntoCheckedOutBranch(selectedBranchName) return self.c.Helpers().MergeAndRebase.MergeRefIntoCheckedOutBranch(selectedBranchName)
} }
func (self *BranchesController) rebase() error { func (self *BranchesController) rebase(branch *models.Branch) error {
selectedBranchName := self.context().GetSelected().Name return self.c.Helpers().MergeAndRebase.RebaseOntoRef(branch.Name)
return self.c.Helpers().MergeAndRebase.RebaseOntoRef(selectedBranchName)
}
func (self *BranchesController) notRebasingOntoSelf(branch *models.Branch) *types.DisabledReason {
selectedBranchName := branch.Name
checkedOutBranch := self.c.Helpers().Refs.GetCheckedOutRef().Name
if selectedBranchName == checkedOutBranch {
return &types.DisabledReason{Text: self.c.Tr.CantRebaseOntoSelf}
}
return nil
} }
func (self *BranchesController) fastForward(branch *models.Branch) error { func (self *BranchesController) fastForward(branch *models.Branch) error {

View File

@ -235,10 +235,15 @@ func (self *MergeAndRebaseHelper) PromptToContinueRebase() error {
func (self *MergeAndRebaseHelper) RebaseOntoRef(ref string) error { func (self *MergeAndRebaseHelper) RebaseOntoRef(ref string) error {
checkedOutBranch := self.refsHelper.GetCheckedOutRef().Name checkedOutBranch := self.refsHelper.GetCheckedOutRef().Name
var disabledReason *types.DisabledReason
if checkedOutBranch == ref {
disabledReason = &types.DisabledReason{Text: self.c.Tr.CantRebaseOntoSelf}
}
menuItems := []*types.MenuItem{ menuItems := []*types.MenuItem{
{ {
Label: self.c.Tr.SimpleRebase, Label: self.c.Tr.SimpleRebase,
Key: 's', Key: 's',
DisabledReason: disabledReason,
OnPress: func() error { OnPress: func() error {
self.c.LogAction(self.c.Tr.Actions.RebaseBranch) self.c.LogAction(self.c.Tr.Actions.RebaseBranch)
return self.c.WithWaitingStatus(self.c.Tr.RebasingStatus, func(task gocui.Task) error { return self.c.WithWaitingStatus(self.c.Tr.RebasingStatus, func(task gocui.Task) error {
@ -258,9 +263,10 @@ func (self *MergeAndRebaseHelper) RebaseOntoRef(ref string) error {
}, },
}, },
{ {
Label: self.c.Tr.InteractiveRebase, Label: self.c.Tr.InteractiveRebase,
Key: 'i', Key: 'i',
Tooltip: self.c.Tr.InteractiveRebaseTooltip, DisabledReason: disabledReason,
Tooltip: self.c.Tr.InteractiveRebaseTooltip,
OnPress: func() error { OnPress: func() error {
self.c.LogAction(self.c.Tr.Actions.RebaseBranch) self.c.LogAction(self.c.Tr.Actions.RebaseBranch)
baseCommit := self.c.Modes().MarkedBaseCommit.GetHash() baseCommit := self.c.Modes().MarkedBaseCommit.GetHash()