aboutsummaryrefslogtreecommitdiffstats
path: root/services/pull/merge.go
diff options
context:
space:
mode:
authorkolaente <k@knt.li>2022-11-03 16:49:00 +0100
committerGitHub <noreply@github.com>2022-11-03 23:49:00 +0800
commit085f717529008c31b147f76ea7eeaf06ca8801bd (patch)
tree673e6904f488d1c2cd0def082d4ff979c72a3de2 /services/pull/merge.go
parentf17edfaf5a31ea3f4e9152424b75c2c4986acbe3 (diff)
downloadgitea-085f717529008c31b147f76ea7eeaf06ca8801bd.tar.gz
gitea-085f717529008c31b147f76ea7eeaf06ca8801bd.zip
feat: notify doers of a merge when automerging (#21553)
I found myself wondering whether a PR I scheduled for automerge was actually merged. It was, but I didn't receive a mail notification for it - that makes sense considering I am the doer and usually don't want to receive such notifications. But ideally I want to receive a notification when a PR was merged because I scheduled it for automerge. This PR implements exactly that. The implementation works, but I wonder if there's a way to avoid passing the "This PR was automerged" state down so much. I tried solving this via the database (checking if there's an automerge scheduled for this PR when sending the notification) but that did not work reliably, probably because sending the notification happens async and the entry might have already been deleted. My implementation might be the most straightforward but maybe not the most elegant. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'services/pull/merge.go')
-rw-r--r--services/pull/merge.go8
1 files changed, 6 insertions, 2 deletions
diff --git a/services/pull/merge.go b/services/pull/merge.go
index 0ca3730183..56ee9c9a73 100644
--- a/services/pull/merge.go
+++ b/services/pull/merge.go
@@ -133,7 +133,7 @@ func GetDefaultMergeMessage(baseGitRepo *git.Repository, pr *issues_model.PullRe
// Merge merges pull request to base repository.
// Caller should check PR is ready to be merged (review and status checks)
-func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, baseGitRepo *git.Repository, mergeStyle repo_model.MergeStyle, expectedHeadCommitID, message string) error {
+func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, baseGitRepo *git.Repository, mergeStyle repo_model.MergeStyle, expectedHeadCommitID, message string, wasAutoMerged bool) error {
if err := pr.LoadHeadRepo(); err != nil {
log.Error("LoadHeadRepo: %v", err)
return fmt.Errorf("LoadHeadRepo: %w", err)
@@ -193,7 +193,11 @@ func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.U
log.Error("GetOwner for issue repo [%d]: %v", pr.ID, err)
}
- notification.NotifyMergePullRequest(pr, doer)
+ if wasAutoMerged {
+ notification.NotifyAutoMergePullRequest(pr, doer)
+ } else {
+ notification.NotifyMergePullRequest(pr, doer)
+ }
// Reset cached commit count
cache.Remove(pr.Issue.Repo.GetCommitsCountCacheKey(pr.BaseBranch, true))