Skip to content

Commit fc696df

Browse files
committed
wip yES i Know theres is a cycle
1 parent 8995046 commit fc696df

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

services/automerge/automerge.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ func RemoveScheduledAutoMerge(ctx context.Context, doer *user_model.User, pull *
9494
})
9595
}
9696

97-
// MergeScheduledPullRequest merges a previously scheduled pull request when all checks succeeded
98-
func MergeScheduledPullRequest(ctx context.Context, sha string, repo *repo_model.Repository) error {
97+
// MergeScheduledPullRequestsBySha merges a previously scheduled pull request(s) when all checks succeeded
98+
func MergeScheduledPullRequestsBySha(ctx context.Context, sha string, repo *repo_model.Repository) error {
9999
pulls, err := getPullRequestsByHeadSHA(ctx, sha, repo, func(pr *issues_model.PullRequest) bool {
100100
return !pr.HasMerged && pr.CanAutoMerge()
101101
})
@@ -110,6 +110,15 @@ func MergeScheduledPullRequest(ctx context.Context, sha string, repo *repo_model
110110
return nil
111111
}
112112

113+
// MergeScheduledPullRequest merges a previously scheduled pull request when all checks succeeded
114+
func MergeScheduledPullRequest(pull *issues_model.PullRequest) {
115+
if pull == nil || pull.HasMerged || !pull.CanAutoMerge() {
116+
return
117+
}
118+
119+
addToQueue(pull, pull.HeadCommitID)
120+
}
121+
113122
func getPullRequestsByHeadSHA(ctx context.Context, sha string, repo *repo_model.Repository, filter func(*issues_model.PullRequest) bool) (map[int64]*issues_model.PullRequest, error) {
114123
gitRepo, err := git.OpenRepository(ctx, repo.RepoPath())
115124
if err != nil {

services/pull/review.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"code.gitea.io/gitea/modules/notification"
2121
"code.gitea.io/gitea/modules/setting"
2222
"code.gitea.io/gitea/modules/util"
23+
"code.gitea.io/gitea/services/automerge"
2324
issue_service "code.gitea.io/gitea/services/issue"
2425
)
2526

@@ -313,6 +314,11 @@ func SubmitReview(ctx context.Context, doer *user_model.User, gitRepo *git.Repos
313314
}
314315
}
315316

317+
// as a missing / blocking reviews could have blocked a pending automerge let's recheck
318+
if review.Type == issues_model.ReviewTypeApprove {
319+
automerge.MergeScheduledPullRequest(pr)
320+
}
321+
316322
return review, comm, nil
317323
}
318324

@@ -386,5 +392,8 @@ func DismissReview(ctx context.Context, reviewID, repoID int64, message string,
386392

387393
notification.NotifyPullReviewDismiss(ctx, doer, review, comment)
388394

395+
// as reviews could have blocked a pending automerge let's recheck
396+
automerge.MergeScheduledPullRequest(review.Issue.PullRequest)
397+
389398
return comment, nil
390399
}

services/repository/files/commit.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ func CreateCommitStatus(ctx context.Context, repo *repo_model.Repository, creato
4848
}
4949

5050
if status.State.IsSuccess() {
51-
if err := automerge.MergeScheduledPullRequest(ctx, sha, repo); err != nil {
52-
return fmt.Errorf("MergeScheduledPullRequest[repo_id: %d, user_id: %d, sha: %s]: %w", repo.ID, creator.ID, sha, err)
51+
if err := automerge.MergeScheduledPullRequestsBySha(ctx, sha, repo); err != nil {
52+
return fmt.Errorf("MergeScheduledPullRequestsBySha[repo_id: %d, user_id: %d, sha: %s]: %w", repo.ID, creator.ID, sha, err)
5353
}
5454
}
5555

0 commit comments

Comments
 (0)