diff --git a/models/repo/release.go b/models/repo/release.go index 663d310bc0..b4637665ab 100644 --- a/models/repo/release.go +++ b/models/repo/release.go @@ -161,6 +161,11 @@ func UpdateRelease(ctx context.Context, rel *Release) error { return err } +func UpdateReleaseNumCommits(ctx context.Context, rel *Release) error { + _, err := db.GetEngine(ctx).ID(rel.ID).Cols("num_commits").Update(rel) + return err +} + // AddReleaseAttachments adds a release attachments func AddReleaseAttachments(ctx context.Context, releaseID int64, attachmentUUIDs []string) (err error) { // Check attachments diff --git a/services/context/repo.go b/services/context/repo.go index 5b18e0d14e..acf829abee 100644 --- a/services/context/repo.go +++ b/services/context/repo.go @@ -938,6 +938,18 @@ func RepoRefByType(detectRefType git.RefType) func(*Context) { ctx.ServerError("GetRelease", err) return } + // for mirror tags, the number of commist may not be set + if rel.NumCommits <= 0 { + rel.NumCommits, err = ctx.Repo.GetCommitsCount() + if err != nil { + ctx.ServerError("GetCommitsCount", err) + return + } + if err := repo_model.UpdateReleaseNumCommits(ctx, rel); err != nil { + ctx.ServerError("UpdateReleaseNumCommits", err) + return + } + } ctx.Repo.CommitsCount = rel.NumCommits } else { ctx.Repo.CommitsCount, err = ctx.Repo.GetCommitsCount()