mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-21 22:43:27 +02:00
refactor how we handle different modes
This commit is contained in:
parent
b1529f19ad
commit
fbd61fcd17
@ -1,40 +1,52 @@
|
|||||||
package gui
|
package gui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/jesseduffield/gocui"
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/commands"
|
"github.com/jesseduffield/lazygit/pkg/commands"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) handleCopyCommit(g *gocui.Gui, v *gocui.View) error {
|
// you can only copy from one context at a time, because the order and position of commits matter
|
||||||
|
|
||||||
|
func (gui *Gui) handleCopyCommit() error {
|
||||||
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
|
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// get currently selected commit, add the sha to state.
|
// get currently selected commit, add the sha to state.
|
||||||
commit := gui.State.Commits[gui.State.Panels.Commits.SelectedLineIdx]
|
context := gui.currentSideContext()
|
||||||
|
if context == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
commit, ok := context.SelectedItem().(*commands.Commit)
|
||||||
|
if !ok {
|
||||||
|
gui.Log.Error("type cast failed for handling copy commit")
|
||||||
|
}
|
||||||
|
if commit == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// we will un-copy it if it's already copied
|
// we will un-copy it if it's already copied
|
||||||
for index, cherryPickedCommit := range gui.State.CherryPickedCommits {
|
for index, cherryPickedCommit := range gui.State.Modes.CherryPicking.CherryPickedCommits {
|
||||||
if commit.Sha == cherryPickedCommit.Sha {
|
if commit.Sha == cherryPickedCommit.Sha {
|
||||||
gui.State.CherryPickedCommits = append(gui.State.CherryPickedCommits[0:index], gui.State.CherryPickedCommits[index+1:]...)
|
gui.State.Modes.CherryPicking.CherryPickedCommits = append(gui.State.Modes.CherryPicking.CherryPickedCommits[0:index], gui.State.Modes.CherryPicking.CherryPickedCommits[index+1:]...)
|
||||||
return gui.Contexts.BranchCommits.Context.HandleRender()
|
return context.HandleRender()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gui.addCommitToCherryPickedCommits(gui.State.Panels.Commits.SelectedLineIdx)
|
gui.addCommitToCherryPickedCommits(gui.State.Panels.Commits.SelectedLineIdx)
|
||||||
return gui.Contexts.BranchCommits.Context.HandleRender()
|
return context.HandleRender()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) cherryPickedCommitShaMap() map[string]bool {
|
func (gui *Gui) CherryPickedCommitShaMap() map[string]bool {
|
||||||
commitShaMap := map[string]bool{}
|
commitShaMap := map[string]bool{}
|
||||||
for _, commit := range gui.State.CherryPickedCommits {
|
for _, commit := range gui.State.Modes.CherryPicking.CherryPickedCommits {
|
||||||
commitShaMap[commit.Sha] = true
|
commitShaMap[commit.Sha] = true
|
||||||
}
|
}
|
||||||
return commitShaMap
|
return commitShaMap
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) addCommitToCherryPickedCommits(index int) {
|
func (gui *Gui) addCommitToCherryPickedCommits(index int) {
|
||||||
commitShaMap := gui.cherryPickedCommitShaMap()
|
commitShaMap := gui.CherryPickedCommitShaMap()
|
||||||
commitShaMap[gui.State.Commits[index].Sha] = true
|
commitShaMap[gui.State.Commits[index].Sha] = true
|
||||||
|
|
||||||
newCommits := []*commands.Commit{}
|
newCommits := []*commands.Commit{}
|
||||||
@ -45,15 +57,15 @@ func (gui *Gui) addCommitToCherryPickedCommits(index int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gui.State.CherryPickedCommits = newCommits
|
gui.State.Modes.CherryPicking.CherryPickedCommits = newCommits
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleCopyCommitRange(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleCopyCommitRange() error {
|
||||||
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
|
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
commitShaMap := gui.cherryPickedCommitShaMap()
|
commitShaMap := gui.CherryPickedCommitShaMap()
|
||||||
|
|
||||||
// find the last commit that is copied that's above our position
|
// find the last commit that is copied that's above our position
|
||||||
// if there are none, startIndex = 0
|
// if there are none, startIndex = 0
|
||||||
@ -72,19 +84,19 @@ func (gui *Gui) handleCopyCommitRange(g *gocui.Gui, v *gocui.View) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// HandlePasteCommits begins a cherry-pick rebase with the commits the user has copied
|
// HandlePasteCommits begins a cherry-pick rebase with the commits the user has copied
|
||||||
func (gui *Gui) HandlePasteCommits(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) HandlePasteCommits() error {
|
||||||
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
|
if ok, err := gui.validateNotInFilterMode(); err != nil || !ok {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return gui.ask(askOpts{
|
return gui.ask(askOpts{
|
||||||
returnToView: v,
|
returnToView: gui.getCommitsView(),
|
||||||
returnFocusOnClose: true,
|
returnFocusOnClose: true,
|
||||||
title: gui.Tr.SLocalize("CherryPick"),
|
title: gui.Tr.SLocalize("CherryPick"),
|
||||||
prompt: gui.Tr.SLocalize("SureCherryPick"),
|
prompt: gui.Tr.SLocalize("SureCherryPick"),
|
||||||
handleConfirm: func() error {
|
handleConfirm: func() error {
|
||||||
return gui.WithWaitingStatus(gui.Tr.SLocalize("CherryPickingStatus"), func() error {
|
return gui.WithWaitingStatus(gui.Tr.SLocalize("CherryPickingStatus"), func() error {
|
||||||
err := gui.GitCommand.CherryPickCommits(gui.State.CherryPickedCommits)
|
err := gui.GitCommand.CherryPickCommits(gui.State.Modes.CherryPicking.CherryPickedCommits)
|
||||||
return gui.handleGenericMergeCommandResult(err)
|
return gui.handleGenericMergeCommandResult(err)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -37,7 +37,7 @@ func (gui *Gui) handleCommitSelect() error {
|
|||||||
task = gui.createRenderStringTask(gui.Tr.SLocalize("NoCommitsThisBranch"))
|
task = gui.createRenderStringTask(gui.Tr.SLocalize("NoCommitsThisBranch"))
|
||||||
} else {
|
} else {
|
||||||
cmd := gui.OSCommand.ExecutableFromString(
|
cmd := gui.OSCommand.ExecutableFromString(
|
||||||
gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.FilterPath),
|
gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.Modes.Filtering.Path),
|
||||||
)
|
)
|
||||||
task = gui.createRunPtyTask(cmd)
|
task = gui.createRunPtyTask(cmd)
|
||||||
}
|
}
|
||||||
@ -97,12 +97,12 @@ func (gui *Gui) refreshCommits() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) refreshCommitsWithLimit() error {
|
func (gui *Gui) refreshCommitsWithLimit() error {
|
||||||
builder := commands.NewCommitListBuilder(gui.Log, gui.GitCommand, gui.OSCommand, gui.Tr, gui.State.CherryPickedCommits)
|
builder := commands.NewCommitListBuilder(gui.Log, gui.GitCommand, gui.OSCommand, gui.Tr, gui.State.Modes.CherryPicking.CherryPickedCommits)
|
||||||
|
|
||||||
commits, err := builder.GetCommits(
|
commits, err := builder.GetCommits(
|
||||||
commands.GetCommitsOptions{
|
commands.GetCommitsOptions{
|
||||||
Limit: gui.State.Panels.Commits.LimitCommits,
|
Limit: gui.State.Panels.Commits.LimitCommits,
|
||||||
FilterPath: gui.State.FilterPath,
|
FilterPath: gui.State.Modes.Filtering.Path,
|
||||||
IncludeRebaseCommits: true,
|
IncludeRebaseCommits: true,
|
||||||
RefName: "HEAD",
|
RefName: "HEAD",
|
||||||
},
|
},
|
||||||
@ -555,7 +555,7 @@ func (gui *Gui) handleOpenSearchForCommitsPanel(g *gocui.Gui, v *gocui.View) err
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleResetCherryPick(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleResetCherryPick(g *gocui.Gui, v *gocui.View) error {
|
||||||
gui.State.CherryPickedCommits = []*commands.Commit{}
|
gui.State.Modes.CherryPicking.CherryPickedCommits = []*commands.Commit{}
|
||||||
return gui.Contexts.BranchCommits.Context.HandleRender()
|
return gui.Contexts.BranchCommits.Context.HandleRender()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,11 +8,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) inDiffMode() bool {
|
func (gui *Gui) inDiffMode() bool {
|
||||||
return gui.State.Diff.Ref != ""
|
return gui.State.Modes.Diffing.Ref != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) exitDiffMode() error {
|
func (gui *Gui) exitDiffMode() error {
|
||||||
gui.State.Diff = DiffState{}
|
gui.State.Modes.Diffing = Diffing{}
|
||||||
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ func (gui *Gui) renderDiff() error {
|
|||||||
filterArg := ""
|
filterArg := ""
|
||||||
|
|
||||||
if gui.inFilterMode() {
|
if gui.inFilterMode() {
|
||||||
filterArg = fmt.Sprintf(" -- %s", gui.State.FilterPath)
|
filterArg = fmt.Sprintf(" -- %s", gui.State.Modes.Filtering.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := gui.OSCommand.ExecutableFromString(
|
cmd := gui.OSCommand.ExecutableFromString(
|
||||||
@ -42,55 +42,34 @@ func (gui *Gui) renderDiff() error {
|
|||||||
// flicking through branches it will be using the local branch name.
|
// flicking through branches it will be using the local branch name.
|
||||||
func (gui *Gui) currentDiffTerminals() []string {
|
func (gui *Gui) currentDiffTerminals() []string {
|
||||||
switch gui.currentContextKey() {
|
switch gui.currentContextKey() {
|
||||||
case FILES_CONTEXT_KEY:
|
case "":
|
||||||
// not supporting files for now
|
return nil
|
||||||
case COMMIT_FILES_CONTEXT_KEY:
|
case FILES_CONTEXT_KEY, COMMIT_FILES_CONTEXT_KEY:
|
||||||
// not supporting commit files for now
|
// not supporting these for now because I'm not sure how it would actually work
|
||||||
case BRANCH_COMMITS_CONTEXT_KEY:
|
return nil
|
||||||
item := gui.getSelectedLocalCommit()
|
|
||||||
if item != nil {
|
|
||||||
return []string{item.RefName()}
|
|
||||||
}
|
|
||||||
case REFLOG_COMMITS_CONTEXT_KEY:
|
|
||||||
item := gui.getSelectedReflogCommit()
|
|
||||||
if item != nil {
|
|
||||||
return []string{item.RefName()}
|
|
||||||
}
|
|
||||||
case STASH_CONTEXT_KEY:
|
|
||||||
item := gui.getSelectedStashEntry()
|
|
||||||
if item != nil {
|
|
||||||
return []string{item.RefName()}
|
|
||||||
}
|
|
||||||
|
|
||||||
case LOCAL_BRANCHES_CONTEXT_KEY:
|
case LOCAL_BRANCHES_CONTEXT_KEY:
|
||||||
|
// for our local branches we want to include both the branch and its upstream
|
||||||
branch := gui.getSelectedBranch()
|
branch := gui.getSelectedBranch()
|
||||||
if branch != nil {
|
if branch != nil {
|
||||||
names := []string{branch.RefName()}
|
names := []string{branch.ID()}
|
||||||
if branch.UpstreamName != "" {
|
if branch.UpstreamName != "" {
|
||||||
names = append(names, branch.UpstreamName)
|
names = append(names, branch.UpstreamName)
|
||||||
}
|
}
|
||||||
return names
|
return names
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
case REMOTES_CONTEXT_KEY:
|
default:
|
||||||
item := gui.getSelectedRemote()
|
context := gui.currentSideContext()
|
||||||
if item != nil {
|
if context == nil {
|
||||||
return []string{item.RefName()}
|
|
||||||
}
|
|
||||||
case REMOTE_BRANCHES_CONTEXT_KEY:
|
|
||||||
item := gui.getSelectedRemoteBranch()
|
|
||||||
if item != nil {
|
|
||||||
return []string{item.RefName()}
|
|
||||||
}
|
|
||||||
case TAGS_CONTEXT_KEY:
|
|
||||||
item := gui.getSelectedTag()
|
|
||||||
if item != nil {
|
|
||||||
return []string{item.RefName()}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
item := context.GetSelectedItem()
|
||||||
|
if item == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return []string{item.ID()}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (gui *Gui) currentDiffTerminal() string {
|
func (gui *Gui) currentDiffTerminal() string {
|
||||||
names := gui.currentDiffTerminals()
|
names := gui.currentDiffTerminals()
|
||||||
@ -101,13 +80,13 @@ func (gui *Gui) currentDiffTerminal() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) diffStr() string {
|
func (gui *Gui) diffStr() string {
|
||||||
output := gui.State.Diff.Ref
|
output := gui.State.Modes.Diffing.Ref
|
||||||
|
|
||||||
right := gui.currentDiffTerminal()
|
right := gui.currentDiffTerminal()
|
||||||
if right != "" {
|
if right != "" {
|
||||||
output += " " + right
|
output += " " + right
|
||||||
}
|
}
|
||||||
if gui.State.Diff.Reverse {
|
if gui.State.Modes.Diffing.Reverse {
|
||||||
output += " -R"
|
output += " -R"
|
||||||
}
|
}
|
||||||
return output
|
return output
|
||||||
@ -127,7 +106,7 @@ func (gui *Gui) handleCreateDiffingMenuPanel(g *gocui.Gui, v *gocui.View) error
|
|||||||
{
|
{
|
||||||
displayString: fmt.Sprintf("%s %s", gui.Tr.SLocalize("diff"), name),
|
displayString: fmt.Sprintf("%s %s", gui.Tr.SLocalize("diff"), name),
|
||||||
onPress: func() error {
|
onPress: func() error {
|
||||||
gui.State.Diff.Ref = name
|
gui.State.Modes.Diffing.Ref = name
|
||||||
// can scope this down based on current view but too lazy right now
|
// can scope this down based on current view but too lazy right now
|
||||||
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
||||||
},
|
},
|
||||||
@ -140,7 +119,7 @@ func (gui *Gui) handleCreateDiffingMenuPanel(g *gocui.Gui, v *gocui.View) error
|
|||||||
displayString: gui.Tr.SLocalize("enterRefToDiff"),
|
displayString: gui.Tr.SLocalize("enterRefToDiff"),
|
||||||
onPress: func() error {
|
onPress: func() error {
|
||||||
return gui.prompt(v, gui.Tr.SLocalize("enteRefName"), "", func(response string) error {
|
return gui.prompt(v, gui.Tr.SLocalize("enteRefName"), "", func(response string) error {
|
||||||
gui.State.Diff.Ref = strings.TrimSpace(response)
|
gui.State.Modes.Diffing.Ref = strings.TrimSpace(response)
|
||||||
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -152,14 +131,14 @@ func (gui *Gui) handleCreateDiffingMenuPanel(g *gocui.Gui, v *gocui.View) error
|
|||||||
{
|
{
|
||||||
displayString: gui.Tr.SLocalize("swapDiff"),
|
displayString: gui.Tr.SLocalize("swapDiff"),
|
||||||
onPress: func() error {
|
onPress: func() error {
|
||||||
gui.State.Diff.Reverse = !gui.State.Diff.Reverse
|
gui.State.Modes.Diffing.Reverse = !gui.State.Modes.Diffing.Reverse
|
||||||
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayString: gui.Tr.SLocalize("exitDiffMode"),
|
displayString: gui.Tr.SLocalize("exitDiffMode"),
|
||||||
onPress: func() error {
|
onPress: func() error {
|
||||||
gui.State.Diff = DiffState{}
|
gui.State.Modes.Diffing = Diffing{}
|
||||||
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package gui
|
package gui
|
||||||
|
|
||||||
func (gui *Gui) inFilterMode() bool {
|
func (gui *Gui) inFilterMode() bool {
|
||||||
return gui.State.FilterPath != ""
|
return gui.State.Modes.Filtering.Path != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) validateNotInFilterMode() (bool, error) {
|
func (gui *Gui) validateNotInFilterMode() (bool, error) {
|
||||||
@ -22,6 +22,6 @@ func (gui *Gui) validateNotInFilterMode() (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) exitFilterMode() error {
|
func (gui *Gui) exitFilterMode() error {
|
||||||
gui.State.FilterPath = ""
|
gui.State.Modes.Filtering.Path = ""
|
||||||
return gui.Errors.ErrRestart
|
return gui.Errors.ErrRestart
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ func (gui *Gui) handleCreateFilteringMenuPanel(g *gocui.Gui, v *gocui.View) erro
|
|||||||
menuItems = append(menuItems, &menuItem{
|
menuItems = append(menuItems, &menuItem{
|
||||||
displayString: fmt.Sprintf("%s '%s'", gui.Tr.SLocalize("filterBy"), fileName),
|
displayString: fmt.Sprintf("%s '%s'", gui.Tr.SLocalize("filterBy"), fileName),
|
||||||
onPress: func() error {
|
onPress: func() error {
|
||||||
gui.State.FilterPath = fileName
|
gui.State.Modes.Filtering.Path = fileName
|
||||||
return gui.Errors.ErrRestart
|
return gui.Errors.ErrRestart
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -42,7 +42,7 @@ func (gui *Gui) handleCreateFilteringMenuPanel(g *gocui.Gui, v *gocui.View) erro
|
|||||||
displayString: gui.Tr.SLocalize("filterPathOption"),
|
displayString: gui.Tr.SLocalize("filterPathOption"),
|
||||||
onPress: func() error {
|
onPress: func() error {
|
||||||
return gui.prompt(v, gui.Tr.SLocalize("enterFileName"), "", func(response string) error {
|
return gui.prompt(v, gui.Tr.SLocalize("enterFileName"), "", func(response string) error {
|
||||||
gui.State.FilterPath = strings.TrimSpace(response)
|
gui.State.Modes.Filtering.Path = strings.TrimSpace(response)
|
||||||
return gui.Errors.ErrRestart
|
return gui.Errors.ErrRestart
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -52,7 +52,7 @@ func (gui *Gui) handleCreateFilteringMenuPanel(g *gocui.Gui, v *gocui.View) erro
|
|||||||
menuItems = append(menuItems, &menuItem{
|
menuItems = append(menuItems, &menuItem{
|
||||||
displayString: gui.Tr.SLocalize("exitFilterMode"),
|
displayString: gui.Tr.SLocalize("exitFilterMode"),
|
||||||
onPress: func() error {
|
onPress: func() error {
|
||||||
gui.State.FilterPath = ""
|
gui.State.Modes.Filtering.Path = ""
|
||||||
return gui.Errors.ErrRestart
|
return gui.Errors.ErrRestart
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -227,11 +227,25 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// if ref is blank we're not diffing anything
|
// if ref is blank we're not diffing anything
|
||||||
type DiffState struct {
|
type Diffing struct {
|
||||||
Ref string
|
Ref string
|
||||||
Reverse bool
|
Reverse bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Filtering struct {
|
||||||
|
Path string // the filename that gets passed to git log
|
||||||
|
}
|
||||||
|
|
||||||
|
type CherryPicking struct {
|
||||||
|
CherryPickedCommits []*commands.Commit
|
||||||
|
}
|
||||||
|
|
||||||
|
type Modes struct {
|
||||||
|
Filtering Filtering
|
||||||
|
CherryPicking CherryPicking
|
||||||
|
Diffing Diffing
|
||||||
|
}
|
||||||
|
|
||||||
type guiState struct {
|
type guiState struct {
|
||||||
Files []*commands.File
|
Files []*commands.File
|
||||||
Branches []*commands.Branch
|
Branches []*commands.Branch
|
||||||
@ -253,7 +267,6 @@ type guiState struct {
|
|||||||
Updating bool
|
Updating bool
|
||||||
Panels *panelStates
|
Panels *panelStates
|
||||||
MainContext string // used to keep the main and secondary views' contexts in sync
|
MainContext string // used to keep the main and secondary views' contexts in sync
|
||||||
CherryPickedCommits []*commands.Commit
|
|
||||||
SplitMainPanel bool
|
SplitMainPanel bool
|
||||||
RetainOriginalDir bool
|
RetainOriginalDir bool
|
||||||
IsRefreshingFiles bool
|
IsRefreshingFiles bool
|
||||||
@ -267,8 +280,8 @@ type guiState struct {
|
|||||||
PrevMainHeight int
|
PrevMainHeight int
|
||||||
OldInformation string
|
OldInformation string
|
||||||
StartupStage int // one of INITIAL and COMPLETE. Allows us to not load everything at once
|
StartupStage int // one of INITIAL and COMPLETE. Allows us to not load everything at once
|
||||||
FilterPath string // the filename that gets passed to git log
|
|
||||||
Diff DiffState
|
Modes Modes
|
||||||
|
|
||||||
ContextStack []Context
|
ContextStack []Context
|
||||||
ViewContextMap map[string]Context
|
ViewContextMap map[string]Context
|
||||||
@ -284,10 +297,20 @@ type guiState struct {
|
|||||||
func (gui *Gui) resetState() {
|
func (gui *Gui) resetState() {
|
||||||
// we carry over the filter path and diff state
|
// we carry over the filter path and diff state
|
||||||
prevFilterPath := ""
|
prevFilterPath := ""
|
||||||
prevDiff := DiffState{}
|
prevDiff := Diffing{}
|
||||||
if gui.State != nil {
|
if gui.State != nil {
|
||||||
prevFilterPath = gui.State.FilterPath
|
prevFilterPath = gui.State.Modes.Filtering.Path
|
||||||
prevDiff = gui.State.Diff
|
prevDiff = gui.State.Modes.Diffing
|
||||||
|
}
|
||||||
|
|
||||||
|
modes := Modes{
|
||||||
|
Filtering: Filtering{
|
||||||
|
Path: prevFilterPath,
|
||||||
|
},
|
||||||
|
CherryPicking: CherryPicking{
|
||||||
|
CherryPickedCommits: make([]*commands.Commit, 0),
|
||||||
|
},
|
||||||
|
Diffing: prevDiff,
|
||||||
}
|
}
|
||||||
|
|
||||||
gui.State = &guiState{
|
gui.State = &guiState{
|
||||||
@ -295,7 +318,6 @@ func (gui *Gui) resetState() {
|
|||||||
Commits: make([]*commands.Commit, 0),
|
Commits: make([]*commands.Commit, 0),
|
||||||
FilteredReflogCommits: make([]*commands.Commit, 0),
|
FilteredReflogCommits: make([]*commands.Commit, 0),
|
||||||
ReflogCommits: make([]*commands.Commit, 0),
|
ReflogCommits: make([]*commands.Commit, 0),
|
||||||
CherryPickedCommits: make([]*commands.Commit, 0),
|
|
||||||
StashEntries: make([]*commands.StashEntry, 0),
|
StashEntries: make([]*commands.StashEntry, 0),
|
||||||
Panels: &panelStates{
|
Panels: &panelStates{
|
||||||
// TODO: work out why some of these are -1 and some are 0. Last time I checked there was a good reason but I'm less certain now
|
// TODO: work out why some of these are -1 and some are 0. Last time I checked there was a good reason but I'm less certain now
|
||||||
@ -319,8 +341,7 @@ func (gui *Gui) resetState() {
|
|||||||
},
|
},
|
||||||
SideView: nil,
|
SideView: nil,
|
||||||
Ptmx: nil,
|
Ptmx: nil,
|
||||||
FilterPath: prevFilterPath,
|
Modes: modes,
|
||||||
Diff: prevDiff,
|
|
||||||
ViewContextMap: gui.initialViewContextMap(),
|
ViewContextMap: gui.initialViewContextMap(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -341,7 +362,7 @@ func NewGui(log *logrus.Entry, gitCommand *commands.GitCommand, oSCommand *comma
|
|||||||
}
|
}
|
||||||
|
|
||||||
gui.resetState()
|
gui.resetState()
|
||||||
gui.State.FilterPath = filterPath
|
gui.State.Modes.Filtering.Path = filterPath
|
||||||
gui.Contexts = gui.contextTree()
|
gui.Contexts = gui.contextTree()
|
||||||
gui.ViewTabContextMap = gui.viewTabContextMap()
|
gui.ViewTabContextMap = gui.viewTabContextMap()
|
||||||
|
|
||||||
|
@ -758,7 +758,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
|
|||||||
ViewName: "commits",
|
ViewName: "commits",
|
||||||
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
|
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
|
||||||
Key: gui.getKey("commits.cherryPickCopy"),
|
Key: gui.getKey("commits.cherryPickCopy"),
|
||||||
Handler: gui.handleCopyCommit,
|
Handler: gui.wrappedHandler(gui.handleCopyCommit),
|
||||||
Description: gui.Tr.SLocalize("cherryPickCopy"),
|
Description: gui.Tr.SLocalize("cherryPickCopy"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -772,14 +772,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
|
|||||||
ViewName: "commits",
|
ViewName: "commits",
|
||||||
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
|
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
|
||||||
Key: gui.getKey("commits.cherryPickCopyRange"),
|
Key: gui.getKey("commits.cherryPickCopyRange"),
|
||||||
Handler: gui.handleCopyCommitRange,
|
Handler: gui.wrappedHandler(gui.handleCopyCommitRange),
|
||||||
Description: gui.Tr.SLocalize("cherryPickCopyRange"),
|
Description: gui.Tr.SLocalize("cherryPickCopyRange"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ViewName: "commits",
|
ViewName: "commits",
|
||||||
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
|
Contexts: []string{BRANCH_COMMITS_CONTEXT_KEY},
|
||||||
Key: gui.getKey("commits.pasteCommits"),
|
Key: gui.getKey("commits.pasteCommits"),
|
||||||
Handler: gui.HandlePasteCommits,
|
Handler: gui.wrappedHandler(gui.HandlePasteCommits),
|
||||||
Description: gui.Tr.SLocalize("pasteCommits"),
|
Description: gui.Tr.SLocalize("pasteCommits"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -867,6 +867,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
|
|||||||
Handler: gui.wrappedHandler(gui.handleNewBranchOffCurrentItem),
|
Handler: gui.wrappedHandler(gui.handleNewBranchOffCurrentItem),
|
||||||
Description: gui.Tr.SLocalize("newBranch"),
|
Description: gui.Tr.SLocalize("newBranch"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ViewName: "commits",
|
||||||
|
Contexts: []string{SUB_COMMITS_CONTEXT_KEY},
|
||||||
|
Key: gui.getKey("commits.cherryPickCopy"),
|
||||||
|
Handler: gui.wrappedHandler(gui.handleCopyCommit),
|
||||||
|
Description: gui.Tr.SLocalize("cherryPickCopy"),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ViewName: "stash",
|
ViewName: "stash",
|
||||||
Key: gui.getKey("universal.goInto"),
|
Key: gui.getKey("universal.goInto"),
|
||||||
|
@ -16,11 +16,11 @@ func (gui *Gui) informationStr() string {
|
|||||||
if gui.inDiffMode() {
|
if gui.inDiffMode() {
|
||||||
return utils.ColoredString(fmt.Sprintf("%s %s %s", gui.Tr.SLocalize("showingGitDiff"), "git diff "+gui.diffStr(), utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgMagenta)
|
return utils.ColoredString(fmt.Sprintf("%s %s %s", gui.Tr.SLocalize("showingGitDiff"), "git diff "+gui.diffStr(), utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgMagenta)
|
||||||
} else if gui.inFilterMode() {
|
} else if gui.inFilterMode() {
|
||||||
return utils.ColoredString(fmt.Sprintf("%s '%s' %s", gui.Tr.SLocalize("filteringBy"), gui.State.FilterPath, utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgRed, color.Bold)
|
return utils.ColoredString(fmt.Sprintf("%s '%s' %s", gui.Tr.SLocalize("filteringBy"), gui.State.Modes.Filtering.Path, utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgRed, color.Bold)
|
||||||
} else if gui.GitCommand.PatchManager.Active() {
|
} else if gui.GitCommand.PatchManager.Active() {
|
||||||
return utils.ColoredString(fmt.Sprintf("%s %s", gui.Tr.SLocalize("buildingPatch"), utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgYellow, color.Bold)
|
return utils.ColoredString(fmt.Sprintf("%s %s", gui.Tr.SLocalize("buildingPatch"), utils.ColoredString(gui.Tr.SLocalize("(reset)"), color.Underline)), color.FgYellow, color.Bold)
|
||||||
} else if len(gui.State.CherryPickedCommits) > 0 {
|
} else if len(gui.State.Modes.CherryPicking.CherryPickedCommits) > 0 {
|
||||||
return utils.ColoredString(fmt.Sprintf("%d commits copied", len(gui.State.CherryPickedCommits)), color.FgCyan)
|
return utils.ColoredString(fmt.Sprintf("%d commits copied", len(gui.State.Modes.CherryPicking.CherryPickedCommits)), color.FgCyan)
|
||||||
} else if gui.g.Mouse {
|
} else if gui.g.Mouse {
|
||||||
donate := color.New(color.FgMagenta, color.Underline).Sprint(gui.Tr.SLocalize("Donate"))
|
donate := color.New(color.FgMagenta, color.Underline).Sprint(gui.Tr.SLocalize("Donate"))
|
||||||
return donate + " " + gui.Config.GetVersion()
|
return donate + " " + gui.Config.GetVersion()
|
||||||
|
@ -275,7 +275,7 @@ func (gui *Gui) filesListContext() *ListContext {
|
|||||||
RendersToMainView: false,
|
RendersToMainView: false,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetFileListDisplayStrings(gui.State.Files, gui.State.Diff.Ref)
|
return presentation.GetFileListDisplayStrings(gui.State.Files, gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_NOTHING,
|
Contains: CONTAINS_NOTHING,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedFile() },
|
SelectedItem: func() ListItem { return gui.getSelectedFile() },
|
||||||
@ -293,7 +293,7 @@ func (gui *Gui) branchesListContext() *ListContext {
|
|||||||
RendersToMainView: true,
|
RendersToMainView: true,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetBranchListDisplayStrings(gui.State.Branches, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Diff.Ref)
|
return presentation.GetBranchListDisplayStrings(gui.State.Branches, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_COMMITS,
|
Contains: CONTAINS_COMMITS,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedBranch() },
|
SelectedItem: func() ListItem { return gui.getSelectedBranch() },
|
||||||
@ -312,7 +312,7 @@ func (gui *Gui) remotesListContext() *ListContext {
|
|||||||
RendersToMainView: true,
|
RendersToMainView: true,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetRemoteListDisplayStrings(gui.State.Remotes, gui.State.Diff.Ref)
|
return presentation.GetRemoteListDisplayStrings(gui.State.Remotes, gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_BRANCHES,
|
Contains: CONTAINS_BRANCHES,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedRemote() },
|
SelectedItem: func() ListItem { return gui.getSelectedRemote() },
|
||||||
@ -330,7 +330,7 @@ func (gui *Gui) remoteBranchesListContext() *ListContext {
|
|||||||
RendersToMainView: true,
|
RendersToMainView: true,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetRemoteBranchListDisplayStrings(gui.State.RemoteBranches, gui.State.Diff.Ref)
|
return presentation.GetRemoteBranchListDisplayStrings(gui.State.RemoteBranches, gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_COMMITS,
|
Contains: CONTAINS_COMMITS,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedRemoteBranch() },
|
SelectedItem: func() ListItem { return gui.getSelectedRemoteBranch() },
|
||||||
@ -348,7 +348,7 @@ func (gui *Gui) tagsListContext() *ListContext {
|
|||||||
RendersToMainView: true,
|
RendersToMainView: true,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetTagListDisplayStrings(gui.State.Tags, gui.State.Diff.Ref)
|
return presentation.GetTagListDisplayStrings(gui.State.Tags, gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_COMMITS,
|
Contains: CONTAINS_COMMITS,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedTag() },
|
SelectedItem: func() ListItem { return gui.getSelectedTag() },
|
||||||
@ -367,7 +367,7 @@ func (gui *Gui) branchCommitsListContext() *ListContext {
|
|||||||
RendersToMainView: true,
|
RendersToMainView: true,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetCommitListDisplayStrings(gui.State.Commits, gui.State.ScreenMode != SCREEN_NORMAL, gui.cherryPickedCommitShaMap(), gui.State.Diff.Ref)
|
return presentation.GetCommitListDisplayStrings(gui.State.Commits, gui.State.ScreenMode != SCREEN_NORMAL, gui.CherryPickedCommitShaMap(), gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_FILES,
|
Contains: CONTAINS_FILES,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedLocalCommit() },
|
SelectedItem: func() ListItem { return gui.getSelectedLocalCommit() },
|
||||||
@ -385,7 +385,7 @@ func (gui *Gui) reflogCommitsListContext() *ListContext {
|
|||||||
RendersToMainView: true,
|
RendersToMainView: true,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetReflogCommitListDisplayStrings(gui.State.FilteredReflogCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Diff.Ref)
|
return presentation.GetReflogCommitListDisplayStrings(gui.State.FilteredReflogCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_FILES,
|
Contains: CONTAINS_FILES,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedReflogCommit() },
|
SelectedItem: func() ListItem { return gui.getSelectedReflogCommit() },
|
||||||
@ -403,7 +403,7 @@ func (gui *Gui) subCommitsListContext() *ListContext {
|
|||||||
RendersToMainView: true,
|
RendersToMainView: true,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetCommitListDisplayStrings(gui.State.SubCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.cherryPickedCommitShaMap(), gui.State.Diff.Ref)
|
return presentation.GetCommitListDisplayStrings(gui.State.SubCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.CherryPickedCommitShaMap(), gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_COMMITS,
|
Contains: CONTAINS_COMMITS,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedSubCommit() },
|
SelectedItem: func() ListItem { return gui.getSelectedSubCommit() },
|
||||||
@ -421,7 +421,7 @@ func (gui *Gui) stashListContext() *ListContext {
|
|||||||
RendersToMainView: true,
|
RendersToMainView: true,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetStashEntryListDisplayStrings(gui.State.StashEntries, gui.State.Diff.Ref)
|
return presentation.GetStashEntryListDisplayStrings(gui.State.StashEntries, gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_FILES,
|
Contains: CONTAINS_FILES,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedStashEntry() },
|
SelectedItem: func() ListItem { return gui.getSelectedStashEntry() },
|
||||||
@ -440,7 +440,7 @@ func (gui *Gui) commitFilesListContext() *ListContext {
|
|||||||
RendersToMainView: true,
|
RendersToMainView: true,
|
||||||
Kind: SIDE_CONTEXT,
|
Kind: SIDE_CONTEXT,
|
||||||
GetDisplayStrings: func() [][]string {
|
GetDisplayStrings: func() [][]string {
|
||||||
return presentation.GetCommitFileListDisplayStrings(gui.State.CommitFiles, gui.State.Diff.Ref)
|
return presentation.GetCommitFileListDisplayStrings(gui.State.CommitFiles, gui.State.Modes.Diffing.Ref)
|
||||||
},
|
},
|
||||||
Contains: CONTAINS_NOTHING,
|
Contains: CONTAINS_NOTHING,
|
||||||
SelectedItem: func() ListItem { return gui.getSelectedCommitFile() },
|
SelectedItem: func() ListItem { return gui.getSelectedCommitFile() },
|
||||||
|
@ -31,7 +31,7 @@ func (gui *Gui) handleCreateRecentReposMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
gui.GitCommand = newGitCommand
|
gui.GitCommand = newGitCommand
|
||||||
gui.State.FilterPath = ""
|
gui.State.Modes.Filtering.Path = ""
|
||||||
return gui.Errors.ErrSwitchRepo
|
return gui.Errors.ErrSwitchRepo
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ func (gui *Gui) handleReflogCommitSelect() error {
|
|||||||
task = gui.createRenderStringTask("No reflog history")
|
task = gui.createRenderStringTask("No reflog history")
|
||||||
} else {
|
} else {
|
||||||
cmd := gui.OSCommand.ExecutableFromString(
|
cmd := gui.OSCommand.ExecutableFromString(
|
||||||
gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.FilterPath),
|
gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.Modes.Filtering.Path),
|
||||||
)
|
)
|
||||||
|
|
||||||
task = gui.createRunPtyTask(cmd)
|
task = gui.createRunPtyTask(cmd)
|
||||||
@ -73,7 +73,7 @@ func (gui *Gui) refreshReflogCommits() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if gui.inFilterMode() {
|
if gui.inFilterMode() {
|
||||||
if err := refresh(&state.FilteredReflogCommits, state.FilterPath); err != nil {
|
if err := refresh(&state.FilteredReflogCommits, state.Modes.Filtering.Path); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -37,7 +37,7 @@ func (gui *Gui) handleStashEntrySelect() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) refreshStashEntries() error {
|
func (gui *Gui) refreshStashEntries() error {
|
||||||
gui.State.StashEntries = gui.GitCommand.GetStashEntries(gui.State.FilterPath)
|
gui.State.StashEntries = gui.GitCommand.GetStashEntries(gui.State.Modes.Filtering.Path)
|
||||||
|
|
||||||
return gui.Contexts.Stash.Context.HandleRender()
|
return gui.Contexts.Stash.Context.HandleRender()
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ func (gui *Gui) handleSubCommitSelect() error {
|
|||||||
task = gui.createRenderStringTask("No commits")
|
task = gui.createRenderStringTask("No commits")
|
||||||
} else {
|
} else {
|
||||||
cmd := gui.OSCommand.ExecutableFromString(
|
cmd := gui.OSCommand.ExecutableFromString(
|
||||||
gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.FilterPath),
|
gui.GitCommand.ShowCmdStr(commit.Sha, gui.State.Modes.Filtering.Path),
|
||||||
)
|
)
|
||||||
|
|
||||||
task = gui.createRunPtyTask(cmd)
|
task = gui.createRunPtyTask(cmd)
|
||||||
@ -79,12 +79,12 @@ func (gui *Gui) handleViewSubCommitFiles() error {
|
|||||||
|
|
||||||
func (gui *Gui) switchToSubCommitsContext(refName string) error {
|
func (gui *Gui) switchToSubCommitsContext(refName string) error {
|
||||||
// need to populate my sub commits
|
// need to populate my sub commits
|
||||||
builder := commands.NewCommitListBuilder(gui.Log, gui.GitCommand, gui.OSCommand, gui.Tr, gui.State.CherryPickedCommits)
|
builder := commands.NewCommitListBuilder(gui.Log, gui.GitCommand, gui.OSCommand, gui.Tr, gui.State.Modes.CherryPicking.CherryPickedCommits)
|
||||||
|
|
||||||
commits, err := builder.GetCommits(
|
commits, err := builder.GetCommits(
|
||||||
commands.GetCommitsOptions{
|
commands.GetCommitsOptions{
|
||||||
Limit: gui.State.Panels.Commits.LimitCommits,
|
Limit: gui.State.Panels.Commits.LimitCommits,
|
||||||
FilterPath: gui.State.FilterPath,
|
FilterPath: gui.State.Modes.Filtering.Path,
|
||||||
IncludeRebaseCommits: false,
|
IncludeRebaseCommits: false,
|
||||||
RefName: refName,
|
RefName: refName,
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user