@@ -5,14 +5,12 @@ package automerge
55
66import (
77 "context"
8- "errors"
98 "fmt"
109 "strconv"
1110 "strings"
1211
1312 "code.gitea.io/gitea/models/db"
1413 issues_model "code.gitea.io/gitea/models/issues"
15- access_model "code.gitea.io/gitea/models/perm/access"
1614 pull_model "code.gitea.io/gitea/models/pull"
1715 repo_model "code.gitea.io/gitea/models/repo"
1816 user_model "code.gitea.io/gitea/models/user"
@@ -275,26 +273,15 @@ func handlePullRequestAutoMerge(pullID int64, sha string) {
275273 }
276274
277275 // Merge if all checks succeeded
278- doer , err := user_model .GetUserByID (ctx , scheduledPRM .DoerID )
276+ // Use GetPossibleUserByID to allow merging by deleted users or bot users
277+ doer , err := user_model .GetPossibleUserByID (ctx , scheduledPRM .DoerID )
279278 if err != nil {
280279 log .Error ("Unable to get scheduled User[%d]: %v" , scheduledPRM .DoerID , err )
281280 return
282281 }
283282
284- perm , err := access_model .GetUserRepoPermission (ctx , pr .HeadRepo , doer )
285- if err != nil {
286- log .Error ("GetUserRepoPermission %-v: %v" , pr .HeadRepo , err )
287- return
288- }
289-
290- if err := pull_service .CheckPullMergeable (ctx , doer , & perm , pr , pull_service .MergeCheckTypeGeneral , false ); err != nil {
291- if errors .Is (err , pull_service .ErrUserNotAllowedToMerge ) {
292- log .Info ("%-v was scheduled to automerge by an unauthorized user" , pr )
293- return
294- }
295- log .Error ("%-v CheckPullMergeable: %v" , pr , err )
296- return
297- }
283+ // We don't check doer's permission here because their permissions have been checked
284+ // before ids were written to the auto_merge table
298285
299286 if err := pull_service .Merge (ctx , pr , doer , baseGitRepo , scheduledPRM .MergeStyle , "" , scheduledPRM .Message , true ); err != nil {
300287 log .Error ("pull_service.Merge: %v" , err )
0 commit comments