From f51af184fb38f1b6e4c4a4bbf4e111c2ba39491d Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Fri, 7 Jul 2023 08:00:41 +0200 Subject: [PATCH] wip yES i Know theres is a cycle --- services/automerge/automerge.go | 13 +++++++++++-- services/repository/commitstatus/commitstatus.go | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/services/automerge/automerge.go b/services/automerge/automerge.go index bd427bef9f..135916247a 100644 --- a/services/automerge/automerge.go +++ b/services/automerge/automerge.go @@ -95,8 +95,8 @@ func RemoveScheduledAutoMerge(ctx context.Context, doer *user_model.User, pull * }) } -// MergeScheduledPullRequest merges a previously scheduled pull request when all checks succeeded -func MergeScheduledPullRequest(ctx context.Context, sha string, repo *repo_model.Repository) error { +// MergeScheduledPullRequestsBySha merges a previously scheduled pull request(s) when all checks succeeded +func MergeScheduledPullRequestsBySha(ctx context.Context, sha string, repo *repo_model.Repository) error { pulls, err := getPullRequestsByHeadSHA(ctx, sha, repo, func(pr *issues_model.PullRequest) bool { return !pr.HasMerged && pr.CanAutoMerge() }) @@ -111,6 +111,15 @@ func MergeScheduledPullRequest(ctx context.Context, sha string, repo *repo_model return nil } +// MergeScheduledPullRequest merges a previously scheduled pull request when all checks succeeded +func MergeScheduledPullRequest(pull *issues_model.PullRequest) { + if pull == nil || pull.HasMerged || !pull.CanAutoMerge() { + return + } + + addToQueue(pull, pull.HeadCommitID) +} + func getPullRequestsByHeadSHA(ctx context.Context, sha string, repo *repo_model.Repository, filter func(*issues_model.PullRequest) bool) (map[int64]*issues_model.PullRequest, error) { gitRepo, err := gitrepo.OpenRepository(ctx, repo) if err != nil { diff --git a/services/repository/commitstatus/commitstatus.go b/services/repository/commitstatus/commitstatus.go index 444ae04d0c..faef0512ba 100644 --- a/services/repository/commitstatus/commitstatus.go +++ b/services/repository/commitstatus/commitstatus.go @@ -115,7 +115,7 @@ func CreateCommitStatus(ctx context.Context, repo *repo_model.Repository, creato } if status.State.IsSuccess() { - if err := automerge.MergeScheduledPullRequest(ctx, sha, repo); err != nil { + if err := automerge.MergeScheduledPullRequestsBySha(ctx, sha, repo); err != nil { return fmt.Errorf("MergeScheduledPullRequest[repo_id: %d, user_id: %d, sha: %s]: %w", repo.ID, creator.ID, sha, err) } }