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.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 err = self.c.PostRefreshUpdate(self.c.Contexts().SubCommits) if err != nil { return err } return self.c.PushContext(self.c.Contexts().SubCommits) }