diff options
author | oliverpool <3864879+oliverpool@users.noreply.github.com> | 2023-04-18 21:11:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-18 21:11:17 +0200 |
commit | bb2783860b8db033f9dcbd223a6c8b5a5c1044ac (patch) | |
tree | 3107ddfb1418ca3e2ab07041c75fe61640d18955 /routers | |
parent | 75b9845420bb5686fc212272a4d9a07543eaced7 (diff) | |
download | gitea-bb2783860b8db033f9dcbd223a6c8b5a5c1044ac.tar.gz gitea-bb2783860b8db033f9dcbd223a6c8b5a5c1044ac.zip |
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 <teabot@gitea.io>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'routers')
-rw-r--r-- | routers/web/repo/release.go | 9 |
1 files changed, 2 insertions, 7 deletions
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) |