From f45ecbc19ac8c5dd4772ebe87f9c06f533e4feba Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Wed, 29 May 2024 11:11:51 +0200 Subject: [PATCH 1/2] Fix out-of-date comment The behavior described in the comment is no longer what we do, it was changed in ae66f720f5; we now always reuse the state. --- pkg/gui/gui.go | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index caa385c3b..0c0f36370 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -342,15 +342,8 @@ func (gui *Gui) onNewRepo(startArgs appTypes.StartArgs, contextKey types.Context return nil } -// resetState determines if we pull the repo state from our repo state map or -// just re-initialize it. For now we're only re-using state when we're going -// in and out of submodules, for the sake of having the cursor back on the submodule -// when we return. -// -// I tried out always reverting to the repo's original state but found that in fact -// it gets a bit confusing to land back in the status panel when visiting a repo -// you've already switched from. There's no doubt some easy way to make the UX -// optimal for all cases but I'm too lazy to think about what that is right now +// resetState reuses the repo state from our repo state map, if the repo was +// open before; otherwise it creates a new one. func (gui *Gui) resetState(startArgs appTypes.StartArgs) types.Context { worktreePath := gui.git.RepoPaths.WorktreePath() From 35af886f554c85d978213fa3f7c735dc25d651ac Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Tue, 28 May 2024 08:32:00 +0200 Subject: [PATCH 2/2] Refresh branches and reflog independently when sorting branches by date When branches are sorted by recency we have this logic that first loads the branches so that they can be rendered quickly; in parallel, it starts loading the reflog in the background, and when that's done, it loads the branches again so that they get their recency values. This means that branches are loaded twice at startup. We don't need this logic when branches are not sorted by recency, so we can simply load branches and reflog in parallel like everything else. This shouldn't change any user observable behavior, it just avoids doing unnecessary work at startup. --- pkg/gui/controllers/helpers/refresh_helper.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/gui/controllers/helpers/refresh_helper.go b/pkg/gui/controllers/helpers/refresh_helper.go index 8d88faeec..b927296fc 100644 --- a/pkg/gui/controllers/helpers/refresh_helper.go +++ b/pkg/gui/controllers/helpers/refresh_helper.go @@ -127,7 +127,12 @@ func (self *RefreshHelper) Refresh(options types.RefreshOptions) error { refresh("commits and commit files", self.refreshCommitsAndCommitFiles) includeWorktreesWithBranches = scopeSet.Includes(types.WORKTREES) - refresh("reflog and branches", func() { self.refreshReflogAndBranches(includeWorktreesWithBranches, options.KeepBranchSelectionIndex) }) + if self.c.AppState.LocalBranchSortOrder == "recency" { + refresh("reflog and branches", func() { self.refreshReflogAndBranches(includeWorktreesWithBranches, options.KeepBranchSelectionIndex) }) + } else { + refresh("branches", func() { self.refreshBranches(includeWorktreesWithBranches, options.KeepBranchSelectionIndex) }) + refresh("reflog", func() { _ = self.refreshReflogCommits() }) + } } else if scopeSet.Includes(types.REBASE_COMMITS) { // the above block handles rebase commits so we only need to call this one // if we've asked specifically for rebase commits and not those other things