From c1f85ce27bf8872bf22c481b89fb230fce2f1f64 Mon Sep 17 00:00:00 2001 From: emilylange Date: Thu, 8 Aug 2024 22:29:42 +0200 Subject: [PATCH] feat(performance): remove `BranchName` in `/:owner/:repo/commit/:commit` `BranchName` provides the nearest branch of the requested `:commit`. It's plenty fast on smaller repositories. On larger repositories like nixpkgs, however, this can easily take 2-3 seconds on a modern machine on a NVMe. For context, at the time of writing, nixpkgs has over 650k commits and roughly 250 branches. `BranchName` is used once in the whole view: The cherry-pick target branch default selection. And I believe that's a logic error, which is why this patch is so small. The nearest branch of a given commit will always be a branch the commit is already part of. The branch you most likely *don't* want to cherry-pick to. Sure, one can technically cherry-pick a commit onto the same branch, but that simply results in an empty commit. I don't believe this is intended and even less so worth the compute. Instead, the cherry-pick branch selection suggestion now always uses the default branch, which used to be the fallback. If a user wants to know which branches contain the given commit, `load-branches-and-tags` exists and should be used instead. Also, to add insult to injury, `BranchName` was calculated for both logged-in and not logged-in users, despite its only consumer, the cherry-pick operation, only being rendered when a given user has write/commit permissions. But this isn't particularly surprising, given this happens a lot in Forgejo's codebase. --- routers/web/repo/commit.go | 6 ------ templates/repo/commit_page.tmpl | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index ec9e49eb9c..0e5d1f0a1f 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -416,12 +416,6 @@ func Diff(ctx *context.Context) { } } - ctx.Data["BranchName"], err = commit.GetBranchName() - if err != nil { - ctx.ServerError("commit.GetBranchName", err) - return - } - ctx.HTML(http.StatusOK, tplCommitPage) } diff --git a/templates/repo/commit_page.tmpl b/templates/repo/commit_page.tmpl index 7fec88cb79..e37686025b 100644 --- a/templates/repo/commit_page.tmpl +++ b/templates/repo/commit_page.tmpl @@ -71,8 +71,8 @@ "branchForm" "branch-dropdown-form" "branchURLPrefix" (printf "%s/_cherrypick/%s/" $.RepoLink .CommitID) "branchURLSuffix" "" "setAction" true "submitForm" true}} -
- + +