@@ -329,12 +329,40 @@ func LatestRelease(ctx *context.Context) {
329329 ctx .Redirect (release .Link ())
330330}
331331
332- // NewRelease render creating or edit release page
333- func NewRelease (ctx * context.Context ) {
332+ func newReleaseCommon (ctx * context.Context ) {
334333 ctx .Data ["Title" ] = ctx .Tr ("repo.release.new_release" )
335334 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)
336364 ctx .Data ["tag_target" ] = ctx .Repo .Repository .DefaultBranch
337- if tagName := ctx .FormString ("tag" ); len ( tagName ) > 0 {
365+ if tagName := ctx .FormString ("tag" ); tagName != "" {
338366 rel , err := repo_model .GetRelease (ctx , ctx .Repo .Repository .ID , tagName )
339367 if err != nil && ! repo_model .IsErrReleaseNotExist (err ) {
340368 ctx .ServerError ("GetRelease" , err )
@@ -343,58 +371,38 @@ func NewRelease(ctx *context.Context) {
343371
344372 if rel != nil {
345373 rel .Repo = ctx .Repo .Repository
346- if err : = rel .LoadAttributes (ctx ); err != nil {
374+ if err = rel .LoadAttributes (ctx ); err != nil {
347375 ctx .ServerError ("LoadAttributes" , err )
348376 return
349377 }
350378
379+ ctx .Data ["TagNameReleaseExists" ] = true
351380 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
355382 ctx .Data ["title" ] = rel .Title
356383 ctx .Data ["content" ] = rel .Note
357384 ctx .Data ["attachments" ] = rel .Attachments
358385 }
359386 }
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
382387
383388 ctx .HTML (http .StatusOK , tplReleaseNew )
384389}
385390
386391// NewReleasePost response for creating a release
387392func NewReleasePost (ctx * context.Context ) {
393+ newReleaseCommon (ctx )
394+ if ctx .Written () {
395+ return
396+ }
397+
388398 form := web .GetForm (ctx ).(* forms.NewReleaseForm )
389- ctx .Data ["Title" ] = ctx .Tr ("repo.release.new_release" )
390- ctx .Data ["PageIsReleaseList" ] = true
391399
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 )
395403 return
396404 }
397- ctx .Data ["Tags " ] = tags
405+ ctx .Data ["TagNameReleaseExists " ] = rel != nil
398406
399407 if ctx .HasError () {
400408 ctx .HTML (http .StatusOK , tplReleaseNew )
@@ -428,12 +436,6 @@ func NewReleasePost(ctx *context.Context) {
428436 }
429437 }
430438
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-
437439 newTagMsg := ""
438440 if form .Title != "" && form .AddTagMsg {
439441 newTagMsg = form .Title + "\n \n " + form .Content
0 commit comments