5
5
package repo
6
6
7
7
import (
8
- "errors"
9
8
"fmt"
10
9
11
- "code.gitea.io/git"
12
10
"code.gitea.io/gitea/models"
13
11
"code.gitea.io/gitea/modules/auth"
14
12
"code.gitea.io/gitea/modules/base"
@@ -67,35 +65,7 @@ func Releases(ctx *context.Context) {
67
65
limit = 10
68
66
}
69
67
70
- rawTags , err := ctx .Repo .GitRepo .GetTagInfos (git.TagOption {})
71
- if err != nil {
72
- ctx .Handle (500 , "GetTags" , err )
73
- return
74
- }
75
-
76
- if len (rawTags ) == 0 {
77
- ctx .HTML (200 , tplReleases )
78
- return
79
- }
80
-
81
- if len (rawTags ) <= (page - 1 )* limit {
82
- ctx .Handle (500 , "Releases" , errors .New ("no more pages" ))
83
- return
84
- }
85
-
86
- var tags []* git.Tag
87
- if page * limit > len (rawTags ) {
88
- tags = rawTags [(page - 1 )* limit :]
89
- } else {
90
- tags = rawTags [(page - 1 )* limit : page * limit ]
91
- }
92
-
93
- var tagNames []string
94
- for _ , t := range tags {
95
- tagNames = append (tagNames , t .Name )
96
- }
97
-
98
- releases , err := models .GetReleasesByRepoIDAndNames (ctx .Repo .Repository .ID , tagNames )
68
+ releases , err := models .GetReleasesByRepoID (ctx .Repo .Repository .ID , page , limit )
99
69
if err != nil {
100
70
ctx .Handle (500 , "GetReleasesByRepoIDAndNames" , err )
101
71
return
@@ -107,61 +77,39 @@ func Releases(ctx *context.Context) {
107
77
return
108
78
}
109
79
110
- // Temproray cache commits count of used branches to speed up.
80
+ // Temporary cache commits count of used branches to speed up.
111
81
countCache := make (map [string ]int64 )
112
- var cacheUsers = make ( map [int64 ]* models.User )
82
+ cacheUsers := map [int64 ]* models.User { ctx . User . ID : ctx . User }
113
83
var ok bool
114
- releaseTags := make ([]* models.Release , len (tags ))
115
- for i , rawTag := range tags {
116
- for _ , r := range releases {
117
- if r .IsDraft && ! ctx .Repo .IsOwner () {
118
- continue
119
- }
120
- if r .TagName == rawTag .Name {
121
- if r .Publisher , ok = cacheUsers [r .PublisherID ]; ! ok {
122
- r .Publisher , err = models .GetUserByID (r .PublisherID )
123
- if err != nil {
124
- if models .IsErrUserNotExist (err ) {
125
- r .Publisher = models .NewGhostUser ()
126
- } else {
127
- ctx .Handle (500 , "GetUserByID" , err )
128
- return
129
- }
130
- }
131
- cacheUsers [r .PublisherID ] = r .Publisher
132
- }
133
84
134
- if err := calReleaseNumCommitsBehind (ctx .Repo , r , countCache ); err != nil {
135
- ctx .Handle (500 , "calReleaseNumCommitsBehind" , err )
85
+ releasesToDisplay := make ([]* models.Release , 0 , len (releases ))
86
+ for _ , r := range releases {
87
+ if r .IsDraft && ! ctx .Repo .IsOwner () {
88
+ continue
89
+ }
90
+ if r .Publisher , ok = cacheUsers [r .PublisherID ]; ! ok {
91
+ r .Publisher , err = models .GetUserByID (r .PublisherID )
92
+ if err != nil {
93
+ if models .IsErrUserNotExist (err ) {
94
+ r .Publisher = models .NewGhostUser ()
95
+ } else {
96
+ ctx .Handle (500 , "GetUserByID" , err )
136
97
return
137
98
}
138
-
139
- r .Note = markdown .RenderString (r .Note , ctx .Repo .RepoLink , ctx .Repo .Repository .ComposeMetas ())
140
- releaseTags [i ] = r
141
- break
142
99
}
100
+ cacheUsers [r .PublisherID ] = r .Publisher
143
101
}
144
-
145
- if releaseTags [i ] == nil {
146
- releaseTags [i ] = & models.Release {
147
- Title : rawTag .Name ,
148
- TagName : rawTag .Name ,
149
- Sha1 : rawTag .Object .String (),
150
- Note : rawTag .Message ,
151
- }
152
-
153
- releaseTags [i ].NumCommits , err = git .CommitsCount (ctx .Repo .GitRepo .Path , rawTag .Object .String ())
154
- if err != nil {
155
- ctx .Handle (500 , "CommitsCount" , err )
156
- return
157
- }
158
- releaseTags [i ].NumCommitsBehind = ctx .Repo .CommitsCount - releaseTags [i ].NumCommits
102
+ if err := calReleaseNumCommitsBehind (ctx .Repo , r , countCache ); err != nil {
103
+ ctx .Handle (500 , "calReleaseNumCommitsBehind" , err )
104
+ return
159
105
}
106
+ r .Note = markdown .RenderString (r .Note , ctx .Repo .RepoLink , ctx .Repo .Repository .ComposeMetas ())
107
+ releasesToDisplay = append (releasesToDisplay , r )
160
108
}
161
109
162
- pager := paginater .New (len (rawTags ), limit , page , 5 )
110
+ pager := paginater .New (len (releases ), limit , page , 5 )
163
111
ctx .Data ["Page" ] = pager
164
- ctx .Data ["Releases" ] = releaseTags
112
+ ctx .Data ["Releases" ] = releasesToDisplay
165
113
ctx .HTML (200 , tplReleases )
166
114
}
167
115
0 commit comments