mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-10-23 17:48:30 +03:00
I don't know why this function argument was added, but I don't like unnecessary indirections, so I'm removing it as SubCommitsHelper has access to everything it needs to do it itself.
80 lines
2.4 KiB
Go
80 lines
2.4 KiB
Go
package helpers
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/commands/git_commands"
|
|
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
"github.com/jesseduffield/lazygit/pkg/utils"
|
|
)
|
|
|
|
type SubCommitsHelper struct {
|
|
c *HelperCommon
|
|
|
|
refreshHelper *RefreshHelper
|
|
}
|
|
|
|
func NewSubCommitsHelper(
|
|
c *HelperCommon,
|
|
refreshHelper *RefreshHelper,
|
|
) *SubCommitsHelper {
|
|
return &SubCommitsHelper{
|
|
c: c,
|
|
refreshHelper: refreshHelper,
|
|
}
|
|
}
|
|
|
|
type ViewSubCommitsOpts struct {
|
|
Ref types.Ref
|
|
RefToShowDivergenceFrom string
|
|
TitleRef string
|
|
Context types.Context
|
|
ShowBranchHeads bool
|
|
}
|
|
|
|
func (self *SubCommitsHelper) ViewSubCommits(opts ViewSubCommitsOpts) error {
|
|
commits, err := self.c.Git().Loaders.CommitLoader.GetCommits(
|
|
git_commands.GetCommitsOptions{
|
|
Limit: true,
|
|
FilterPath: self.c.Modes().Filtering.GetPath(),
|
|
FilterAuthor: self.c.Modes().Filtering.GetAuthor(),
|
|
IncludeRebaseCommits: false,
|
|
RefName: opts.Ref.FullRefName(),
|
|
RefForPushedStatus: opts.Ref.FullRefName(),
|
|
RefToShowDivergenceFrom: opts.RefToShowDivergenceFrom,
|
|
MainBranches: self.c.Model().MainBranches,
|
|
HashPool: self.c.Model().HashPool,
|
|
},
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
self.setSubCommits(commits)
|
|
self.refreshHelper.RefreshAuthors(commits)
|
|
|
|
subCommitsContext := self.c.Contexts().SubCommits
|
|
subCommitsContext.SetSelection(0)
|
|
subCommitsContext.SetParentContext(opts.Context)
|
|
subCommitsContext.SetWindowName(opts.Context.GetWindowName())
|
|
subCommitsContext.SetTitleRef(utils.TruncateWithEllipsis(opts.TitleRef, 50))
|
|
subCommitsContext.SetRef(opts.Ref)
|
|
subCommitsContext.SetRefToShowDivergenceFrom(opts.RefToShowDivergenceFrom)
|
|
subCommitsContext.SetLimitCommits(true)
|
|
subCommitsContext.SetShowBranchHeads(opts.ShowBranchHeads)
|
|
subCommitsContext.ClearSearchString()
|
|
subCommitsContext.GetView().ClearSearch()
|
|
subCommitsContext.GetView().TitlePrefix = opts.Context.GetView().TitlePrefix
|
|
|
|
self.c.PostRefreshUpdate(self.c.Contexts().SubCommits)
|
|
|
|
self.c.Context().Push(self.c.Contexts().SubCommits, types.OnFocusOpts{})
|
|
return nil
|
|
}
|
|
|
|
func (self *SubCommitsHelper) setSubCommits(commits []*models.Commit) {
|
|
self.c.Mutexes().SubCommitsMutex.Lock()
|
|
defer self.c.Mutexes().SubCommitsMutex.Unlock()
|
|
|
|
self.c.Model().SubCommits = commits
|
|
}
|