func NewReleasePost(ctx *middleware.Context, form auth.NewReleaseForm) { if !ctx.Repo.IsOwner() { ctx.Handle(403, "release.ReleasesNew", nil) return } ctx.Data["Title"] = ctx.Tr("repo.release.new_release") ctx.Data["IsRepoToolbarReleases"] = true ctx.Data["IsRepoReleaseNew"] = true if ctx.HasError() { ctx.HTML(200, RELEASE_NEW) return } if !ctx.Repo.GitRepo.IsBranchExist(form.Target) { ctx.RenderWithErr(ctx.Tr("form.target_branch_not_exist"), RELEASE_NEW, &form) return } commit, err := ctx.Repo.GitRepo.GetCommitOfBranch(form.Target) if err != nil { ctx.Handle(500, "GetCommitOfBranch", err) return } commitsCount, err := commit.CommitsCount() if err != nil { ctx.Handle(500, "CommitsCount", err) return } rel := &models.Release{ RepoId: ctx.Repo.Repository.Id, PublisherId: ctx.User.Id, Title: form.Title, TagName: form.TagName, Target: form.Target, Sha1: commit.Id.String(), NumCommits: commitsCount, Note: form.Content, IsDraft: len(form.Draft) > 0, IsPrerelease: form.Prerelease, } if err = models.CreateRelease(ctx.Repo.GitRepo, rel); err != nil { if err == models.ErrReleaseAlreadyExist { ctx.RenderWithErr(ctx.Tr("repo.release.tag_name_already_exist"), RELEASE_NEW, &form) } else { ctx.Handle(500, "CreateRelease", err) } return } log.Trace("%s Release created: %s/%s:%s", ctx.Req.RequestURI, ctx.User.LowerName, ctx.Repo.Repository.Name, form.TagName) ctx.Redirect(ctx.Repo.RepoLink + "/releases") }
func NewReleasePost(ctx *context.Context, form auth.NewReleaseForm) { ctx.Data["Title"] = ctx.Tr("repo.release.new_release") ctx.Data["PageIsReleaseList"] = true if ctx.HasError() { ctx.HTML(200, RELEASE_NEW) return } if !ctx.Repo.GitRepo.IsBranchExist(form.Target) { ctx.RenderWithErr(ctx.Tr("form.target_branch_not_exist"), RELEASE_NEW, &form) return } commit, err := ctx.Repo.GitRepo.GetBranchCommit(form.Target) if err != nil { ctx.Handle(500, "GetBranchCommit", err) return } commitsCount, err := commit.CommitsCount() if err != nil { ctx.Handle(500, "CommitsCount", err) return } rel := &models.Release{ RepoID: ctx.Repo.Repository.ID, PublisherID: ctx.User.ID, Title: form.Title, TagName: form.TagName, Target: form.Target, Sha1: commit.ID.String(), NumCommits: commitsCount, Note: form.Content, IsDraft: len(form.Draft) > 0, IsPrerelease: form.Prerelease, } if err = models.CreateRelease(ctx.Repo.GitRepo, rel); err != nil { ctx.Data["Err_TagName"] = true switch { case models.IsErrReleaseAlreadyExist(err): ctx.RenderWithErr(ctx.Tr("repo.release.tag_name_already_exist"), RELEASE_NEW, &form) case models.IsErrInvalidTagName(err): ctx.RenderWithErr(ctx.Tr("repo.release.tag_name_invalid"), RELEASE_NEW, &form) default: ctx.Handle(500, "CreateRelease", err) } return } log.Trace("Release created: %s/%s:%s", ctx.User.LowerName, ctx.Repo.Repository.Name, form.TagName) ctx.Redirect(ctx.Repo.RepoLink + "/releases") }
func ReleasesNewPost(ctx *middleware.Context, form auth.NewReleaseForm) { if !ctx.Repo.IsOwner { ctx.Handle(404, "release.ReleasesNew", nil) return } ctx.Data["Title"] = "New Release" ctx.Data["IsRepoToolbarReleases"] = true ctx.Data["IsRepoReleaseNew"] = true if ctx.HasError() { ctx.HTML(200, "release/new") return } commitsCount, err := ctx.Repo.Commit.CommitsCount() if err != nil { ctx.Handle(500, "release.ReleasesNewPost(CommitsCount)", err) return } rel := &models.Release{ RepoId: ctx.Repo.Repository.Id, PublisherId: ctx.User.Id, Title: form.Title, TagName: form.TagName, SHA1: ctx.Repo.Commit.Id.String(), NumCommits: commitsCount, Note: form.Content, IsPrerelease: form.Prerelease, } if err = models.CreateRelease(models.RepoPath(ctx.User.Name, ctx.Repo.Repository.Name), rel, ctx.Repo.GitRepo); err != nil { if err == models.ErrReleaseAlreadyExist { ctx.RenderWithErr("Release with this tag name has already existed", "release/new", &form) } else { ctx.Handle(500, "release.ReleasesNewPost(IsReleaseExist)", err) } return } log.Trace("%s Release created: %s/%s:%s", ctx.Req.RequestURI, ctx.User.LowerName, ctx.Repo.Repository.Name, form.TagName) ctx.Redirect(ctx.Repo.RepoLink + "/releases") }
func CreateRelease(ctx *middleware.Context, form api.CreateReleaseOption) { if !ctx.Repo.GitRepo.IsBranchExist(form.Target) { ctx.Handle(400, "IsBranchExist", errors.New("Branch did not exist, "+form.Target)) return } commit, err := ctx.Repo.GitRepo.GetCommitOfBranch(form.Target) if err != nil { ctx.Handle(500, "GetCommitOfBranch", err) return } commitsCount, err := commit.CommitsCount() if err != nil { ctx.Handle(500, "CommitsCount", err) return } rel := &models.Release{ RepoID: ctx.Repo.Repository.ID, Publisher: ctx.User, PublisherID: ctx.User.Id, Title: form.Title, TagName: form.TagName, Target: form.Target, Sha1: commit.ID.String(), NumCommits: commitsCount, Note: form.Note, IsDraft: form.IsDraft, IsPrerelease: form.IsPrerelease, } err = models.CreateRelease(ctx.Repo.GitRepo, rel) if err != nil { ctx.Handle(500, "CreateRelease", err) return } ctx.JSON(201, ToApiRelease(rel)) }