From bb2783860b8db033f9dcbd223a6c8b5a5c1044ac Mon Sep 17 00:00:00 2001 From: oliverpool <3864879+oliverpool@users.noreply.github.com> Date: Tue, 18 Apr 2023 21:11:17 +0200 Subject: fix calReleaseNumCommitsBehind (#24148) `repoCtx.CommitsCount` is not reliably the commit count of the default branch (Repository.GetCommitsCount depends on what is currently displayed). For instance on the releases page the commit count is correct: https://codeberg.org/Codeberg/pages-server/releases ![2023-04-15-215027](https://user-images.githubusercontent.com/3864879/232250500-6c05dc00-7030-4ec9-87f1-18c7797d36bf.png) However it is not on the single page: https://codeberg.org/Codeberg/pages-server/releases/tag/v4.6.2 ![2023-04-15-215036](https://user-images.githubusercontent.com/3864879/232250503-620c8038-7c2c-45a1-b99d-cb994ef955a6.png) This PR fixes this by removing a "fast branch" which was using this field (I think this field should be removed, since it is a bit unpredictable - but this would mean a larger refactoring PR). _contributed in the context of @forgejo_ --------- Co-authored-by: Giteabot Co-authored-by: Lunny Xiao --- routers/web/repo/release.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'routers/web/repo/release.go') diff --git a/routers/web/repo/release.go b/routers/web/repo/release.go index e8caa2cbb7..6a5ebd5dad 100644 --- a/routers/web/repo/release.go +++ b/routers/web/repo/release.go @@ -35,15 +35,10 @@ const ( // calReleaseNumCommitsBehind calculates given release has how many commits behind release target. func calReleaseNumCommitsBehind(repoCtx *context.Repository, release *repo_model.Release, countCache map[string]int64) error { - // Fast return if release target is same as default branch. - if repoCtx.BranchName == release.Target { - release.NumCommitsBehind = repoCtx.CommitsCount - release.NumCommits - return nil - } - // Get count if not exists if _, ok := countCache[release.Target]; !ok { - if repoCtx.GitRepo.IsBranchExist(release.Target) { + // short-circuit for the default branch + if repoCtx.Repository.DefaultBranch == release.Target || repoCtx.GitRepo.IsBranchExist(release.Target) { commit, err := repoCtx.GitRepo.GetBranchCommit(release.Target) if err != nil { return fmt.Errorf("GetBranchCommit: %w", err) -- cgit v1.2.3