mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-01-24 05:36:19 +02:00
75 lines
2.2 KiB
Go
75 lines
2.2 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
|
|
setSubCommits func([]*models.Commit)
|
|
}
|
|
|
|
func NewSubCommitsHelper(
|
|
c *HelperCommon,
|
|
refreshHelper *RefreshHelper,
|
|
setSubCommits func([]*models.Commit),
|
|
) *SubCommitsHelper {
|
|
return &SubCommitsHelper{
|
|
c: c,
|
|
refreshHelper: refreshHelper,
|
|
setSubCommits: setSubCommits,
|
|
}
|
|
}
|
|
|
|
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(),
|
|
IncludeRebaseCommits: false,
|
|
RefName: opts.Ref.FullRefName(),
|
|
RefForPushedStatus: opts.Ref.FullRefName(),
|
|
RefToShowDivergenceFrom: opts.RefToShowDivergenceFrom,
|
|
},
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
self.setSubCommits(commits)
|
|
self.refreshHelper.RefreshAuthors(commits)
|
|
|
|
subCommitsContext := self.c.Contexts().SubCommits
|
|
subCommitsContext.SetSelectedLineIdx(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
|
|
|
|
err = self.c.PostRefreshUpdate(self.c.Contexts().SubCommits)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return self.c.PushContext(self.c.Contexts().SubCommits)
|
|
}
|