@@ -32,34 +32,41 @@ func getMergeBase(repo *git.Repository, pr *issues_model.PullRequest, baseBranch
3232 return mergeBase , err
3333}
3434
35- func PullRequestCodeOwnersReview (ctx context.Context , pull * issues_model.Issue , pr * issues_model.PullRequest ) error {
35+ type ReviewRequestNotifier struct {
36+ Comment * issues_model.Comment
37+ IsAdd bool
38+ Reviwer * user_model.User
39+ ReviewTeam * org_model.Team
40+ }
41+
42+ func PullRequestCodeOwnersReview (ctx context.Context , pull * issues_model.Issue , pr * issues_model.PullRequest ) ([]* ReviewRequestNotifier , error ) {
3643 files := []string {"CODEOWNERS" , "docs/CODEOWNERS" , ".gitea/CODEOWNERS" }
3744
3845 if pr .IsWorkInProgress (ctx ) {
39- return nil
46+ return nil , nil
4047 }
4148
4249 if err := pr .LoadHeadRepo (ctx ); err != nil {
43- return err
50+ return nil , err
4451 }
4552
4653 if pr .HeadRepo .IsFork {
47- return nil
54+ return nil , nil
4855 }
4956
5057 if err := pr .LoadBaseRepo (ctx ); err != nil {
51- return err
58+ return nil , err
5259 }
5360
5461 repo , err := git .OpenRepository (ctx , pr .BaseRepo .RepoPath ())
5562 if err != nil {
56- return err
63+ return nil , err
5764 }
5865 defer repo .Close ()
5966
6067 commit , err := repo .GetBranchCommit (pr .BaseRepo .DefaultBranch )
6168 if err != nil {
62- return err
69+ return nil , err
6370 }
6471
6572 var data string
@@ -77,14 +84,14 @@ func PullRequestCodeOwnersReview(ctx context.Context, pull *issues_model.Issue,
7784 // get the mergebase
7885 mergeBase , err := getMergeBase (repo , pr , git .BranchPrefix + pr .BaseBranch , pr .GetGitRefName ())
7986 if err != nil {
80- return err
87+ return nil , err
8188 }
8289
8390 // https://github.com/go-gitea/gitea/issues/29763, we need to get the files changed
8491 // between the merge base and the head commit but not the base branch and the head commit
8592 changedFiles , err := repo .GetFilesChangedBetween (mergeBase , pr .HeadCommitID )
8693 if err != nil {
87- return err
94+ return nil , err
8895 }
8996
9097 uniqUsers := make (map [int64 ]* user_model.User )
@@ -102,20 +109,34 @@ func PullRequestCodeOwnersReview(ctx context.Context, pull *issues_model.Issue,
102109 }
103110 }
104111
112+ notifiers := make ([]* ReviewRequestNotifier , 0 , len (uniqUsers )+ len (uniqTeams ))
113+
105114 for _ , u := range uniqUsers {
106115 if u .ID != pull .Poster .ID {
107- if _ , err := issues_model .AddReviewRequest (ctx , pull , u , pull .Poster ); err != nil {
116+ comment , err := issues_model .AddReviewRequest (ctx , pull , u , pull .Poster )
117+ if err != nil {
108118 log .Warn ("Failed add assignee user: %s to PR review: %s#%d, error: %s" , u .Name , pr .BaseRepo .Name , pr .ID , err )
109- return err
119+ return nil , err
110120 }
121+ notifiers = append (notifiers , & ReviewRequestNotifier {
122+ Comment : comment ,
123+ IsAdd : true ,
124+ Reviwer : pull .Poster ,
125+ })
111126 }
112127 }
113128 for _ , t := range uniqTeams {
114- if _ , err := issues_model .AddTeamReviewRequest (ctx , pull , t , pull .Poster ); err != nil {
129+ comment , err := issues_model .AddTeamReviewRequest (ctx , pull , t , pull .Poster )
130+ if err != nil {
115131 log .Warn ("Failed add assignee team: %s to PR review: %s#%d, error: %s" , t .Name , pr .BaseRepo .Name , pr .ID , err )
116- return err
132+ return nil , err
117133 }
134+ notifiers = append (notifiers , & ReviewRequestNotifier {
135+ Comment : comment ,
136+ IsAdd : true ,
137+ ReviewTeam : t ,
138+ })
118139 }
119140
120- return nil
141+ return notifiers , nil
121142}
0 commit comments