@@ -32,34 +32,41 @@ func getMergeBase(repo *git.Repository, pr *issues_model.PullRequest, baseBranch
32
32
return mergeBase , err
33
33
}
34
34
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 ) {
36
43
files := []string {"CODEOWNERS" , "docs/CODEOWNERS" , ".gitea/CODEOWNERS" }
37
44
38
45
if pr .IsWorkInProgress (ctx ) {
39
- return nil
46
+ return nil , nil
40
47
}
41
48
42
49
if err := pr .LoadHeadRepo (ctx ); err != nil {
43
- return err
50
+ return nil , err
44
51
}
45
52
46
53
if pr .HeadRepo .IsFork {
47
- return nil
54
+ return nil , nil
48
55
}
49
56
50
57
if err := pr .LoadBaseRepo (ctx ); err != nil {
51
- return err
58
+ return nil , err
52
59
}
53
60
54
61
repo , err := git .OpenRepository (ctx , pr .BaseRepo .RepoPath ())
55
62
if err != nil {
56
- return err
63
+ return nil , err
57
64
}
58
65
defer repo .Close ()
59
66
60
67
commit , err := repo .GetBranchCommit (pr .BaseRepo .DefaultBranch )
61
68
if err != nil {
62
- return err
69
+ return nil , err
63
70
}
64
71
65
72
var data string
@@ -77,14 +84,14 @@ func PullRequestCodeOwnersReview(ctx context.Context, pull *issues_model.Issue,
77
84
// get the mergebase
78
85
mergeBase , err := getMergeBase (repo , pr , git .BranchPrefix + pr .BaseBranch , pr .GetGitRefName ())
79
86
if err != nil {
80
- return err
87
+ return nil , err
81
88
}
82
89
83
90
// https://github.com/go-gitea/gitea/issues/29763, we need to get the files changed
84
91
// between the merge base and the head commit but not the base branch and the head commit
85
92
changedFiles , err := repo .GetFilesChangedBetween (mergeBase , pr .HeadCommitID )
86
93
if err != nil {
87
- return err
94
+ return nil , err
88
95
}
89
96
90
97
uniqUsers := make (map [int64 ]* user_model.User )
@@ -102,20 +109,34 @@ func PullRequestCodeOwnersReview(ctx context.Context, pull *issues_model.Issue,
102
109
}
103
110
}
104
111
112
+ notifiers := make ([]* ReviewRequestNotifier , 0 , len (uniqUsers )+ len (uniqTeams ))
113
+
105
114
for _ , u := range uniqUsers {
106
115
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 {
108
118
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
110
120
}
121
+ notifiers = append (notifiers , & ReviewRequestNotifier {
122
+ Comment : comment ,
123
+ IsAdd : true ,
124
+ Reviwer : pull .Poster ,
125
+ })
111
126
}
112
127
}
113
128
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 {
115
131
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
117
133
}
134
+ notifiers = append (notifiers , & ReviewRequestNotifier {
135
+ Comment : comment ,
136
+ IsAdd : true ,
137
+ ReviewTeam : t ,
138
+ })
118
139
}
119
140
120
- return nil
141
+ return notifiers , nil
121
142
}
0 commit comments