API: don't allow merged PRs to be reopened (#17271)
parent
245596e130
commit
c927ebd119
|
@ -752,6 +752,15 @@ func EditIssue(ctx *context.APIContext) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if form.State != nil {
|
if form.State != nil {
|
||||||
|
if issue.IsPull {
|
||||||
|
if pr, err := issue.GetPullRequest(); err != nil {
|
||||||
|
ctx.Error(http.StatusInternalServerError, "GetPullRequest", err)
|
||||||
|
return
|
||||||
|
} else if pr.HasMerged {
|
||||||
|
ctx.Error(http.StatusPreconditionFailed, "MergedPRState", "cannot change state of this pull request, it was already merged")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
issue.IsClosed = api.StateClosed == api.StateType(*form.State)
|
issue.IsClosed = api.StateClosed == api.StateType(*form.State)
|
||||||
}
|
}
|
||||||
statusChangeComment, titleChanged, err := models.UpdateIssueByAPI(issue, ctx.User)
|
statusChangeComment, titleChanged, err := models.UpdateIssueByAPI(issue, ctx.User)
|
||||||
|
|
|
@ -584,6 +584,10 @@ func EditPullRequest(ctx *context.APIContext) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if form.State != nil {
|
if form.State != nil {
|
||||||
|
if pr.HasMerged {
|
||||||
|
ctx.Error(http.StatusPreconditionFailed, "MergedPRState", "cannot change state of this pull request, it was already merged")
|
||||||
|
return
|
||||||
|
}
|
||||||
issue.IsClosed = api.StateClosed == api.StateType(*form.State)
|
issue.IsClosed = api.StateClosed == api.StateType(*form.State)
|
||||||
}
|
}
|
||||||
statusChangeComment, titleChanged, err := models.UpdateIssueByAPI(issue, ctx.User)
|
statusChangeComment, titleChanged, err := models.UpdateIssueByAPI(issue, ctx.User)
|
||||||
|
@ -605,7 +609,7 @@ func EditPullRequest(ctx *context.APIContext) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// change pull target branch
|
// change pull target branch
|
||||||
if len(form.Base) != 0 && form.Base != pr.BaseBranch {
|
if !pr.HasMerged && len(form.Base) != 0 && form.Base != pr.BaseBranch {
|
||||||
if !ctx.Repo.GitRepo.IsBranchExist(form.Base) {
|
if !ctx.Repo.GitRepo.IsBranchExist(form.Base) {
|
||||||
ctx.Error(http.StatusNotFound, "NewBaseBranchNotExist", fmt.Errorf("new base '%s' not exist", form.Base))
|
ctx.Error(http.StatusNotFound, "NewBaseBranchNotExist", fmt.Errorf("new base '%s' not exist", form.Base))
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue