@@ -7,42 +7,8 @@ package models
7
7
import (
8
8
"fmt"
9
9
"strings"
10
- "time"
11
-
12
- "code.gitea.io/gitea/modules/git"
13
- "code.gitea.io/gitea/modules/timeutil"
14
- )
15
-
16
- // env keys for git hooks need
17
- const (
18
- EnvRepoName = "GITEA_REPO_NAME"
19
- EnvRepoUsername = "GITEA_REPO_USER_NAME"
20
- EnvRepoIsUncyclo = "GITEA_REPO_IS_WIKI"
21
- EnvPusherName = "GITEA_PUSHER_NAME"
22
- EnvPusherEmail = "GITEA_PUSHER_EMAIL"
23
- EnvPusherID = "GITEA_PUSHER_ID"
24
- EnvKeyID = "GITEA_KEY_ID"
25
- EnvIsDeployKey = "GITEA_IS_DEPLOY_KEY"
26
- EnvIsInternal = "GITEA_INTERNAL_PUSH"
27
10
)
28
11
29
- // PushUpdateAddDeleteTags updates a number of added and delete tags
30
- func PushUpdateAddDeleteTags (repo * Repository , gitRepo * git.Repository , addTags , delTags []string ) error {
31
- sess := x .NewSession ()
32
- defer sess .Close ()
33
- if err := sess .Begin (); err != nil {
34
- return fmt .Errorf ("Unable to begin sess in PushUpdateDeleteTags: %v" , err )
35
- }
36
- if err := pushUpdateDeleteTags (sess , repo , delTags ); err != nil {
37
- return err
38
- }
39
- if err := pushUpdateAddTags (sess , repo , gitRepo , addTags ); err != nil {
40
- return err
41
- }
42
-
43
- return sess .Commit ()
44
- }
45
-
46
12
// PushUpdateDeleteTags updates a number of delete tags
47
13
func PushUpdateDeleteTags (repo * Repository , tags []string ) error {
48
14
sess := x .NewSession ()
@@ -57,6 +23,11 @@ func PushUpdateDeleteTags(repo *Repository, tags []string) error {
57
23
return sess .Commit ()
58
24
}
59
25
26
+ // PushUpdateDeleteTagsContext updates a number of delete tags with context
27
+ func PushUpdateDeleteTagsContext (ctx DBContext , repo * Repository , tags []string ) error {
28
+ return pushUpdateDeleteTags (ctx .e , repo , tags )
29
+ }
30
+
60
31
func pushUpdateDeleteTags (e Engine , repo * Repository , tags []string ) error {
61
32
if len (tags ) == 0 {
62
33
return nil
@@ -111,125 +82,6 @@ func PushUpdateDeleteTag(repo *Repository, tagName string) error {
111
82
return nil
112
83
}
113
84
114
- // PushUpdateAddTags updates a number of add tags
115
- func PushUpdateAddTags (repo * Repository , gitRepo * git.Repository , tags []string ) error {
116
- sess := x .NewSession ()
117
- defer sess .Close ()
118
- if err := sess .Begin (); err != nil {
119
- return fmt .Errorf ("Unable to begin sess in PushUpdateAddTags: %v" , err )
120
- }
121
- if err := pushUpdateAddTags (sess , repo , gitRepo , tags ); err != nil {
122
- return err
123
- }
124
-
125
- return sess .Commit ()
126
- }
127
- func pushUpdateAddTags (e Engine , repo * Repository , gitRepo * git.Repository , tags []string ) error {
128
- if len (tags ) == 0 {
129
- return nil
130
- }
131
-
132
- lowerTags := make ([]string , 0 , len (tags ))
133
- for _ , tag := range tags {
134
- lowerTags = append (lowerTags , strings .ToLower (tag ))
135
- }
136
-
137
- releases := make ([]Release , 0 , len (tags ))
138
- if err := e .Where ("repo_id = ?" , repo .ID ).
139
- In ("lower_tag_name" , lowerTags ).Find (& releases ); err != nil {
140
- return fmt .Errorf ("GetRelease: %v" , err )
141
- }
142
- relMap := make (map [string ]* Release )
143
- for _ , rel := range releases {
144
- relMap [rel .LowerTagName ] = & rel
145
- }
146
-
147
- newReleases := make ([]* Release , 0 , len (lowerTags )- len (relMap ))
148
-
149
- emailToUser := make (map [string ]* User )
150
-
151
- for i , lowerTag := range lowerTags {
152
- tag , err := gitRepo .GetTag (tags [i ])
153
- if err != nil {
154
- return fmt .Errorf ("GetTag: %v" , err )
155
- }
156
- commit , err := tag .Commit ()
157
- if err != nil {
158
- return fmt .Errorf ("Commit: %v" , err )
159
- }
160
-
161
- sig := tag .Tagger
162
- if sig == nil {
163
- sig = commit .Author
164
- }
165
- if sig == nil {
166
- sig = commit .Committer
167
- }
168
- var author * User
169
- var createdAt = time .Unix (1 , 0 )
170
-
171
- if sig != nil {
172
- var ok bool
173
- author , ok = emailToUser [sig .Email ]
174
- if ! ok {
175
- author , err = GetUserByEmail (sig .Email )
176
- if err != nil && ! IsErrUserNotExist (err ) {
177
- return fmt .Errorf ("GetUserByEmail: %v" , err )
178
- }
179
- }
180
- createdAt = sig .When
181
- }
182
-
183
- commitsCount , err := commit .CommitsCount ()
184
- if err != nil {
185
- return fmt .Errorf ("CommitsCount: %v" , err )
186
- }
187
-
188
- rel , has := relMap [lowerTag ]
189
-
190
- if ! has {
191
- rel = & Release {
192
- RepoID : repo .ID ,
193
- Title : "" ,
194
- TagName : tags [i ],
195
- LowerTagName : lowerTag ,
196
- Target : "" ,
197
- Sha1 : commit .ID .String (),
198
- NumCommits : commitsCount ,
199
- Note : "" ,
200
- IsDraft : false ,
201
- IsPrerelease : false ,
202
- IsTag : true ,
203
- CreatedUnix : timeutil .TimeStamp (createdAt .Unix ()),
204
- }
205
- if author != nil {
206
- rel .PublisherID = author .ID
207
- }
208
-
209
- newReleases = append (newReleases , rel )
210
- } else {
211
- rel .Sha1 = commit .ID .String ()
212
- rel .CreatedUnix = timeutil .TimeStamp (createdAt .Unix ())
213
- rel .NumCommits = commitsCount
214
- rel .IsDraft = false
215
- if rel .IsTag && author != nil {
216
- rel .PublisherID = author .ID
217
- }
218
- if _ , err = e .ID (rel .ID ).AllCols ().Update (rel ); err != nil {
219
- return fmt .Errorf ("Update: %v" , err )
220
- }
221
- }
222
- }
223
-
224
- if len (newReleases ) > 0 {
225
- if _ , err := e .Insert (newReleases ); err != nil {
226
- return fmt .Errorf ("Insert: %v" , err )
227
- }
228
- }
229
-
230
- return nil
231
- }
232
-
233
85
// SaveOrUpdateTag must be called for any push actions to add tag
234
86
func SaveOrUpdateTag (repo * Repository , newRel * Release ) error {
235
87
rel , err := GetRelease (repo .ID , newRel .TagName )
0 commit comments