diff options
Diffstat (limited to 'routers/repo/release.go')
-rw-r--r-- | routers/repo/release.go | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/routers/repo/release.go b/routers/repo/release.go index 0df4a1f1d9..672741c5ba 100644 --- a/routers/repo/release.go +++ b/routers/repo/release.go @@ -20,7 +20,7 @@ const ( RELEASE_NEW base.TplName = "repo/release/new" ) -// calReleaseNumCommitsBehind calculates given release has how many commits behind default branch. +// calReleaseNumCommitsBehind calculates given release has how many commits behind release target. func calReleaseNumCommitsBehind(repoCtx *context.Repository, release *models.Release, countCache map[string]int64) error { // Fast return if release target is same as default branch. if repoCtx.BranchName == release.Target { @@ -30,16 +30,21 @@ func calReleaseNumCommitsBehind(repoCtx *context.Repository, release *models.Rel // Get count if not exists if _, ok := countCache[release.Target]; !ok { - commit, err := repoCtx.GitRepo.GetBranchCommit(repoCtx.BranchName) - if err != nil { - return fmt.Errorf("GetBranchCommit: %v", err) - } - countCache[repoCtx.BranchName], err = commit.CommitsCount() - if err != nil { - return fmt.Errorf("CommitsCount: %v", err) + if repoCtx.GitRepo.IsBranchExist(release.Target) { + commit, err := repoCtx.GitRepo.GetBranchCommit(release.Target) + if err != nil { + return fmt.Errorf("GetBranchCommit: %v", err) + } + countCache[release.Target], err = commit.CommitsCount() + if err != nil { + return fmt.Errorf("CommitsCount: %v", err) + } + } else { + // Use NumCommits of the newest release on that target + countCache[release.Target] = release.NumCommits } } - release.NumCommitsBehind = countCache[repoCtx.BranchName] - release.NumCommits + release.NumCommitsBehind = countCache[release.Target] - release.NumCommits return nil } |