Merge branch 'mg/pr-review/unresolved-block-merge' of _OKE5H2PQKOUfzFFDuD4FA/default/CODE/gitness (#66)

This commit is contained in:
Marko Gacesa 2023-05-12 12:10:21 +00:00 committed by Harness
commit 15e394c058
2 changed files with 19 additions and 2 deletions

View File

@ -83,10 +83,27 @@ func (c *Controller) Merge(
return types.MergeResponse{}, usererror.BadRequest("Pull request must be open")
}
if pr.UnresolvedCount > 0 {
return types.MergeResponse{}, usererror.BadRequest("Pull requests with unresolved comments can't be merged. Resolve all the comments first.")
}
if pr.IsDraft {
return types.MergeResponse{}, usererror.BadRequest("Draft pull requests can't be merged. Clear the draft flag first.")
}
reviewers, err := c.reviewerStore.List(ctx, pr.ID)
if err != nil {
return types.MergeResponse{}, fmt.Errorf("failed to load list of reviwers: %w", err)
}
// TODO: We need to extend this section. A review decision might be for an older commit.
// TODO: Repository admin users should be able to override this and proceed with the merge.
for _, reviewer := range reviewers {
if reviewer.ReviewDecision == enum.PullReqReviewDecisionChangeReq {
return types.MergeResponse{}, usererror.BadRequest("At least one reviewer still requests changes.")
}
}
sourceRepo := targetRepo
if pr.SourceRepoID != pr.TargetRepoID {
sourceRepo, err = c.repoStore.Find(ctx, pr.SourceRepoID)

View File

@ -38,12 +38,12 @@ func HandleReviewSubmit(pullreqCtrl *pullreq.Controller) http.HandlerFunc {
return
}
review, err := pullreqCtrl.ReviewSubmit(ctx, session, repoRef, pullreqNumber, in)
_, err = pullreqCtrl.ReviewSubmit(ctx, session, repoRef, pullreqNumber, in)
if err != nil {
render.TranslatedUserError(w, err)
return
}
render.JSON(w, http.StatusOK, review)
w.WriteHeader(http.StatusNoContent)
}
}