@@ -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"
@@ -263,26 +261,15 @@ func handlePullRequestAutoMerge(pullID int64, sha string) {
263261 }
264262
265263 // Merge if all checks succeeded
266- doer , err := user_model .GetUserByID (ctx , scheduledPRM .DoerID )
264+ // Use GetPossibleUserByID to allow merging by deleted users or bot users
265+ doer , err := user_model .GetPossibleUserByID (ctx , scheduledPRM .DoerID )
267266 if err != nil {
268267 log .Error ("Unable to get scheduled User[%d]: %v" , scheduledPRM .DoerID , err )
269268 return
270269 }
271270
272- perm , err := access_model .GetUserRepoPermission (ctx , pr .HeadRepo , doer )
273- if err != nil {
274- log .Error ("GetUserRepoPermission %-v: %v" , pr .HeadRepo , err )
275- return
276- }
277-
278- if err := pull_service .CheckPullMergeable (ctx , doer , & perm , pr , pull_service .MergeCheckTypeGeneral , false ); err != nil {
279- if errors .Is (pull_service .ErrUserNotAllowedToMerge , err ) {
280- log .Info ("%-v was scheduled to automerge by an unauthorized user" , pr )
281- return
282- }
283- log .Error ("%-v CheckPullMergeable: %v" , pr , err )
284- return
285- }
271+ // We don't check doer's permission here because their permissions have been checked
272+ // before ids were written to the auto_merge table
286273
287274 if err := pull_service .Merge (ctx , pr , doer , baseGitRepo , scheduledPRM .MergeStyle , "" , scheduledPRM .Message , true ); err != nil {
288275 log .Error ("pull_service.Merge: %v" , err )
0 commit comments