@@ -329,12 +329,40 @@ func LatestRelease(ctx *context.Context) {
329
329
ctx .Redirect (release .Link ())
330
330
}
331
331
332
- // NewRelease render creating or edit release page
333
- func NewRelease (ctx * context.Context ) {
332
+ func newReleaseCommon (ctx * context.Context ) {
334
333
ctx .Data ["Title" ] = ctx .Tr ("repo.release.new_release" )
335
334
ctx .Data ["PageIsReleaseList" ] = true
335
+
336
+ tags , err := repo_model .GetTagNamesByRepoID (ctx , ctx .Repo .Repository .ID )
337
+ if err != nil {
338
+ ctx .ServerError ("GetTagNamesByRepoID" , err )
339
+ return
340
+ }
341
+ ctx .Data ["Tags" ] = tags
342
+
343
+ ctx .Data ["IsAttachmentEnabled" ] = setting .Attachment .Enabled
344
+ assigneeUsers , err := repo_model .GetRepoAssignees (ctx , ctx .Repo .Repository )
345
+ if err != nil {
346
+ ctx .ServerError ("GetRepoAssignees" , err )
347
+ return
348
+ }
349
+ ctx .Data ["Assignees" ] = shared_user .MakeSelfOnTop (ctx .Doer , assigneeUsers )
350
+
351
+ upload .AddUploadContext (ctx , "release" )
352
+
353
+ PrepareBranchList (ctx ) // for New Release page
354
+ }
355
+
356
+ // NewRelease render creating or edit release page
357
+ func NewRelease (ctx * context.Context ) {
358
+ newReleaseCommon (ctx )
359
+ if ctx .Written () {
360
+ return
361
+ }
362
+
363
+ // pre-fill the form with the tag name, target branch and the existing release (if exists)
336
364
ctx .Data ["tag_target" ] = ctx .Repo .Repository .DefaultBranch
337
- if tagName := ctx .FormString ("tag" ); len ( tagName ) > 0 {
365
+ if tagName := ctx .FormString ("tag" ); tagName != "" {
338
366
rel , err := repo_model .GetRelease (ctx , ctx .Repo .Repository .ID , tagName )
339
367
if err != nil && ! repo_model .IsErrReleaseNotExist (err ) {
340
368
ctx .ServerError ("GetRelease" , err )
@@ -343,58 +371,38 @@ func NewRelease(ctx *context.Context) {
343
371
344
372
if rel != nil {
345
373
rel .Repo = ctx .Repo .Repository
346
- if err : = rel .LoadAttributes (ctx ); err != nil {
374
+ if err = rel .LoadAttributes (ctx ); err != nil {
347
375
ctx .ServerError ("LoadAttributes" , err )
348
376
return
349
377
}
350
378
379
+ ctx .Data ["TagNameReleaseExists" ] = true
351
380
ctx .Data ["tag_name" ] = rel .TagName
352
- if rel .Target != "" {
353
- ctx .Data ["tag_target" ] = rel .Target
354
- }
381
+ ctx .Data ["tag_target" ] = rel .Target
355
382
ctx .Data ["title" ] = rel .Title
356
383
ctx .Data ["content" ] = rel .Note
357
384
ctx .Data ["attachments" ] = rel .Attachments
358
385
}
359
386
}
360
- ctx .Data ["IsAttachmentEnabled" ] = setting .Attachment .Enabled
361
- assigneeUsers , err := repo_model .GetRepoAssignees (ctx , ctx .Repo .Repository )
362
- if err != nil {
363
- ctx .ServerError ("GetRepoAssignees" , err )
364
- return
365
- }
366
- ctx .Data ["Assignees" ] = shared_user .MakeSelfOnTop (ctx .Doer , assigneeUsers )
367
-
368
- upload .AddUploadContext (ctx , "release" )
369
-
370
- // For New Release page
371
- PrepareBranchList (ctx )
372
- if ctx .Written () {
373
- return
374
- }
375
-
376
- tags , err := repo_model .GetTagNamesByRepoID (ctx , ctx .Repo .Repository .ID )
377
- if err != nil {
378
- ctx .ServerError ("GetTagNamesByRepoID" , err )
379
- return
380
- }
381
- ctx .Data ["Tags" ] = tags
382
387
383
388
ctx .HTML (http .StatusOK , tplReleaseNew )
384
389
}
385
390
386
391
// NewReleasePost response for creating a release
387
392
func NewReleasePost (ctx * context.Context ) {
393
+ newReleaseCommon (ctx )
394
+ if ctx .Written () {
395
+ return
396
+ }
397
+
388
398
form := web .GetForm (ctx ).(* forms.NewReleaseForm )
389
- ctx .Data ["Title" ] = ctx .Tr ("repo.release.new_release" )
390
- ctx .Data ["PageIsReleaseList" ] = true
391
399
392
- tags , err := repo_model .GetTagNamesByRepoID (ctx , ctx .Repo .Repository .ID )
393
- if err != nil {
394
- ctx .ServerError ("GetTagNamesByRepoID " , err )
400
+ rel , err := repo_model .GetRelease (ctx , ctx .Repo .Repository .ID , form . TagName )
401
+ if err != nil && ! repo_model . IsErrReleaseNotExist ( err ) {
402
+ ctx .ServerError ("GetRelease " , err )
395
403
return
396
404
}
397
- ctx .Data ["Tags " ] = tags
405
+ ctx .Data ["TagNameReleaseExists " ] = rel != nil
398
406
399
407
if ctx .HasError () {
400
408
ctx .HTML (http .StatusOK , tplReleaseNew )
@@ -428,12 +436,6 @@ func NewReleasePost(ctx *context.Context) {
428
436
}
429
437
}
430
438
431
- rel , err := repo_model .GetRelease (ctx , ctx .Repo .Repository .ID , form .TagName )
432
- if err != nil && ! repo_model .IsErrReleaseNotExist (err ) {
433
- ctx .ServerError ("GetRelease" , err )
434
- return
435
- }
436
-
437
439
newTagMsg := ""
438
440
if form .Title != "" && form .AddTagMsg {
439
441
newTagMsg = form .Title + "\n \n " + form .Content
0 commit comments