Don't allow merging PR's which are being conflict checked (#19357)

* Don't allow merging PR's which are being conflict checked

- When a PR is still being conflict checked, don't allow the PR to be
merged(the merge button could already be visible before e.g. a new
commit was pushed to the PR).
- Relevant(should prevent such issue from happening) #19352

Co-authored-by: delvh <dev.lh@web.de>
This commit is contained in:
Gusted 2022-04-20 14:43:15 +00:00 committed by GitHub
parent f2229e0566
commit 5e68fe7d37
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -36,6 +36,7 @@ var (
ErrUserNotAllowedToMerge = errors.New("user not allowed to merge") ErrUserNotAllowedToMerge = errors.New("user not allowed to merge")
ErrHasMerged = errors.New("has already been merged") ErrHasMerged = errors.New("has already been merged")
ErrIsWorkInProgress = errors.New("work in progress PRs cannot be merged") ErrIsWorkInProgress = errors.New("work in progress PRs cannot be merged")
ErrIsChecking = errors.New("cannot merge while conflict checking is in progress")
ErrNotMergableState = errors.New("not in mergeable state") ErrNotMergableState = errors.New("not in mergeable state")
ErrDependenciesLeft = errors.New("is blocked by an open dependency") ErrDependenciesLeft = errors.New("is blocked by an open dependency")
) )
@ -88,6 +89,10 @@ func CheckPullMergable(ctx context.Context, doer *user_model.User, perm *models.
return ErrNotMergableState return ErrNotMergableState
} }
if pr.IsChecking() {
return ErrIsChecking
}
if err := CheckPRReadyToMerge(ctx, pr, false); err != nil { if err := CheckPRReadyToMerge(ctx, pr, false); err != nil {
if models.IsErrDisallowedToMerge(err) { if models.IsErrDisallowedToMerge(err) {
if force { if force {