@@ -146,64 +146,28 @@ func NewReleasePost(ctx *context.Context, form auth.NewReleaseForm) {
146146 return
147147 }
148148
149- var tagCreatedUnix int64
150- tag , err := ctx .Repo .GitRepo .GetTag (form .TagName )
151- if err == nil {
152- commit , err := tag .Commit ()
153- if err == nil {
154- tagCreatedUnix = commit .Author .When .Unix ()
155- }
156- }
157-
158- commit , err := ctx .Repo .GitRepo .GetBranchCommit (form .Target )
159- if err != nil {
160- ctx .Handle (500 , "GetBranchCommit" , err )
161- return
162- }
163-
164- commitsCount , err := commit .CommitsCount ()
165- if err != nil {
166- ctx .Handle (500 , "CommitsCount" , err )
167- return
168- }
169-
170- rel , err := models .GetRelease (ctx .Repo .Repository .ID , form .TagName )
171- if err != nil && ! models .IsErrReleaseNotExist (err ) {
172- ctx .Handle (500 , "GetRelease" , err )
173- return
174- }
175-
176149 var attachmentUUIDs []string
177150 if setting .AttachmentEnabled {
178151 attachmentUUIDs = form .Files
179152 }
180153
181- if rel != nil && rel .IsTag {
182- rel .Title = form .Title
183- rel .Note = form .Content
184- rel .IsDraft = len (form .Draft ) > 0
185- rel .IsPrerelease = form .Prerelease
186- rel .PublisherID = ctx .User .ID
187- rel .IsTag = false
188-
189- if err = models .UpdateRelease (ctx .Repo .GitRepo , rel , attachmentUUIDs ); err != nil {
190- ctx .Data ["Err_TagName" ] = true
191- ctx .Handle (500 , "UpdateRelease" , err )
154+ rel , err := models .GetRelease (ctx .Repo .Repository .ID , form .TagName )
155+ if err != nil {
156+ if ! models .IsErrReleaseNotExist (err ) {
157+ ctx .Handle (500 , "GetRelease" , err )
192158 return
193159 }
194- } else {
160+
195161 rel := & models.Release {
196162 RepoID : ctx .Repo .Repository .ID ,
197163 PublisherID : ctx .User .ID ,
198164 Title : form .Title ,
199165 TagName : form .TagName ,
200166 Target : form .Target ,
201- Sha1 : commit .ID .String (),
202- NumCommits : commitsCount ,
203167 Note : form .Content ,
204168 IsDraft : len (form .Draft ) > 0 ,
205169 IsPrerelease : form .Prerelease ,
206- CreatedUnix : tagCreatedUnix ,
170+ IsTag : false ,
207171 }
208172
209173 if err = models .CreateRelease (ctx .Repo .GitRepo , rel , attachmentUUIDs ); err != nil {
@@ -218,6 +182,25 @@ func NewReleasePost(ctx *context.Context, form auth.NewReleaseForm) {
218182 }
219183 return
220184 }
185+ } else {
186+ if ! rel .IsTag {
187+ ctx .Data ["Err_TagName" ] = true
188+ ctx .RenderWithErr (ctx .Tr ("repo.release.tag_name_already_exist" ), tplReleaseNew , & form )
189+ return
190+ }
191+
192+ rel .Title = form .Title
193+ rel .Note = form .Content
194+ rel .IsDraft = len (form .Draft ) > 0
195+ rel .IsPrerelease = form .Prerelease
196+ rel .PublisherID = ctx .User .ID
197+ rel .IsTag = false
198+
199+ if err = models .UpdateRelease (ctx .Repo .GitRepo , rel , attachmentUUIDs ); err != nil {
200+ ctx .Data ["Err_TagName" ] = true
201+ ctx .Handle (500 , "UpdateRelease" , err )
202+ return
203+ }
221204 }
222205 log .Trace ("Release created: %s/%s:%s" , ctx .User .LowerName , ctx .Repo .Repository .Name , form .TagName )
223206
@@ -268,6 +251,10 @@ func EditReleasePost(ctx *context.Context, form auth.EditReleaseForm) {
268251 }
269252 return
270253 }
254+ if rel .IsTag {
255+ ctx .Handle (404 , "GetRelease" , err )
256+ return
257+ }
271258 ctx .Data ["tag_name" ] = rel .TagName
272259 ctx .Data ["tag_target" ] = rel .Target
273260 ctx .Data ["title" ] = rel .Title
0 commit comments