Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion routers/private/hook_pre_receive.go
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ func preReceiveBranch(ctx *preReceiveContext, oldCommitID, newCommitID, refFullN
}

// Check all status checks and reviews are ok
if err := pull_service.CheckPRReadyToMerge(ctx, pr, true); err != nil {
if err := pull_service.CheckPullBranchProtections(ctx, pr, true); err != nil {
if models.IsErrDisallowedToMerge(err) {
log.Warn("Forbidden: User %d is not allowed push to protected branch %s in %-v and pr #%d is not ready to be merged: %s", ctx.opts.UserID, branchName, repo, pr.Index, err.Error())
ctx.JSON(http.StatusForbidden, private.Response{
Expand Down
17 changes: 5 additions & 12 deletions services/pull/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ var prPatchCheckerQueue queue.UniqueQueue

var (
ErrIsClosed = errors.New("pull is cosed")
ErrUserNotAllowedToMerge = errors.New("user not allowed to merge")
ErrUserNotAllowedToMerge = models.ErrDisallowedToMerge{}
ErrHasMerged = errors.New("has already been merged")
ErrIsWorkInProgress = errors.New("work in progress PRs cannot be merged")
ErrIsChecking = errors.New("cannot merge while conflict checking is in progress")
Expand Down Expand Up @@ -81,13 +81,6 @@ func CheckPullMergable(ctx context.Context, doer *user_model.User, perm *models.
return nil
}

if pr.ProtectedBranch != nil && (!pr.ProtectedBranch.HasEnoughApprovals(pr) ||
pr.ProtectedBranch.MergeBlockedByRejectedReview(pr) ||
pr.ProtectedBranch.MergeBlockedByOfficialReviewRequests(pr) ||
pr.ProtectedBranch.MergeBlockedByOutdatedBranch(pr)) {
return ErrUserNotAllowedToMerge
}

if pr.IsWorkInProgress() {
return ErrIsWorkInProgress
}
Expand All @@ -100,13 +93,13 @@ func CheckPullMergable(ctx context.Context, doer *user_model.User, perm *models.
return ErrIsChecking
}

if err := CheckPRReadyToMerge(ctx, pr, false); err != nil {
if err := CheckPullBranchProtections(ctx, pr, false); err != nil {
if models.IsErrDisallowedToMerge(err) {
if force {
if isRepoAdmin, err := models.IsUserRepoAdmin(pr.BaseRepo, doer); err != nil {
return err
if isRepoAdmin, err2 := models.IsUserRepoAdmin(pr.BaseRepo, doer); err2 != nil {
return err2
} else if !isRepoAdmin {
return ErrUserNotAllowedToMerge
return err
}
}
} else {
Expand Down
4 changes: 2 additions & 2 deletions services/pull/merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -662,8 +662,8 @@ func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *use
return false, nil
}

// CheckPRReadyToMerge checks whether the PR is ready to be merged (reviews and status checks)
func CheckPRReadyToMerge(ctx context.Context, pr *models.PullRequest, skipProtectedFilesCheck bool) (err error) {
// CheckPullBranchProtections checks whether the PR is ready to be merged (reviews and status checks)
func CheckPullBranchProtections(ctx context.Context, pr *models.PullRequest, skipProtectedFilesCheck bool) (err error) {
if err = pr.LoadBaseRepoCtx(ctx); err != nil {
return fmt.Errorf("LoadBaseRepo: %v", err)
}
Expand Down