summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authoroliverpool <3864879+oliverpool@users.noreply.github.com>2023-04-18 21:11:17 +0200
committerGitHub <noreply@github.com>2023-04-18 21:11:17 +0200
commitbb2783860b8db033f9dcbd223a6c8b5a5c1044ac (patch)
tree3107ddfb1418ca3e2ab07041c75fe61640d18955 /routers
parent75b9845420bb5686fc212272a4d9a07543eaced7 (diff)
downloadgitea-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.go9
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)