@@ -33,34 +33,41 @@ func getMergeBase(repo *git.Repository, pr *issues_model.PullRequest, baseBranch
3333 return mergeBase , err
3434}
3535
36- func PullRequestCodeOwnersReview (ctx context.Context , pull * issues_model.Issue , pr * issues_model.PullRequest ) error {
36+ type ReviewRequestNotifier struct {
37+ Comment * issues_model.Comment
38+ IsAdd bool
39+ Reviwer * user_model.User
40+ ReviewTeam * org_model.Team
41+ }
42+
43+ func PullRequestCodeOwnersReview (ctx context.Context , pull * issues_model.Issue , pr * issues_model.PullRequest ) ([]* ReviewRequestNotifier , error ) {
3744 files := []string {"CODEOWNERS" , "docs/CODEOWNERS" , ".gitea/CODEOWNERS" }
3845
3946 if pr .IsWorkInProgress (ctx ) {
40- return nil
47+ return nil , nil
4148 }
4249
4350 if err := pr .LoadHeadRepo (ctx ); err != nil {
44- return err
51+ return nil , err
4552 }
4653
4754 if pr .HeadRepo .IsFork {
48- return nil
55+ return nil , nil
4956 }
5057
5158 if err := pr .LoadBaseRepo (ctx ); err != nil {
52- return err
59+ return nil , err
5360 }
5461
5562 repo , err := gitrepo .OpenRepository (ctx , pr .BaseRepo )
5663 if err != nil {
57- return err
64+ return nil , err
5865 }
5966 defer repo .Close ()
6067
6168 commit , err := repo .GetBranchCommit (pr .BaseRepo .DefaultBranch )
6269 if err != nil {
63- return err
70+ return nil , err
6471 }
6572
6673 var data string
@@ -78,14 +85,14 @@ func PullRequestCodeOwnersReview(ctx context.Context, pull *issues_model.Issue,
7885 // get the mergebase
7986 mergeBase , err := getMergeBase (repo , pr , git .BranchPrefix + pr .BaseBranch , pr .GetGitRefName ())
8087 if err != nil {
81- return err
88+ return nil , err
8289 }
8390
8491 // https://github.com/go-gitea/gitea/issues/29763, we need to get the files changed
8592 // between the merge base and the head commit but not the base branch and the head commit
8693 changedFiles , err := repo .GetFilesChangedBetween (mergeBase , pr .HeadCommitID )
8794 if err != nil {
88- return err
95+ return nil , err
8996 }
9097
9198 uniqUsers := make (map [int64 ]* user_model.User )
@@ -103,20 +110,34 @@ func PullRequestCodeOwnersReview(ctx context.Context, pull *issues_model.Issue,
103110 }
104111 }
105112
113+ notifiers := make ([]* ReviewRequestNotifier , 0 , len (uniqUsers )+ len (uniqTeams ))
114+
106115 for _ , u := range uniqUsers {
107116 if u .ID != pull .Poster .ID {
108- if _ , err := issues_model .AddReviewRequest (ctx , pull , u , pull .Poster ); err != nil {
117+ comment , err := issues_model .AddReviewRequest (ctx , pull , u , pull .Poster )
118+ if err != nil {
109119 log .Warn ("Failed add assignee user: %s to PR review: %s#%d, error: %s" , u .Name , pr .BaseRepo .Name , pr .ID , err )
110- return err
120+ return nil , err
111121 }
122+ notifiers = append (notifiers , & ReviewRequestNotifier {
123+ Comment : comment ,
124+ IsAdd : true ,
125+ Reviwer : pull .Poster ,
126+ })
112127 }
113128 }
114129 for _ , t := range uniqTeams {
115- if _ , err := issues_model .AddTeamReviewRequest (ctx , pull , t , pull .Poster ); err != nil {
130+ comment , err := issues_model .AddTeamReviewRequest (ctx , pull , t , pull .Poster )
131+ if err != nil {
116132 log .Warn ("Failed add assignee team: %s to PR review: %s#%d, error: %s" , t .Name , pr .BaseRepo .Name , pr .ID , err )
117- return err
133+ return nil , err
118134 }
135+ notifiers = append (notifiers , & ReviewRequestNotifier {
136+ Comment : comment ,
137+ IsAdd : true ,
138+ ReviewTeam : t ,
139+ })
119140 }
120141
121- return nil
142+ return notifiers , nil
122143}
0 commit comments