Skip to content

Commit 34fb9d6

Browse files
lunnyzeripath
authored andcommitted
Move AddTestPullRequestTask to pull service package from models (#8324)
* move AddTestPullRequestTask to pull service package from models * fix fmt
1 parent ebe8ff7 commit 34fb9d6

File tree

5 files changed

+92
-90
lines changed

5 files changed

+92
-90
lines changed

models/pull.go

-87
Original file line numberDiff line numberDiff line change
@@ -1072,93 +1072,6 @@ func (prs PullRequestList) InvalidateCodeComments(doer *User, repo *git.Reposito
10721072
return prs.invalidateCodeComments(x, doer, repo, branch)
10731073
}
10741074

1075-
func addHeadRepoTasks(prs []*PullRequest) {
1076-
for _, pr := range prs {
1077-
log.Trace("addHeadRepoTasks[%d]: composing new test task", pr.ID)
1078-
if err := pr.UpdatePatch(); err != nil {
1079-
log.Error("UpdatePatch: %v", err)
1080-
continue
1081-
} else if err := pr.PushToBaseRepo(); err != nil {
1082-
log.Error("PushToBaseRepo: %v", err)
1083-
continue
1084-
}
1085-
1086-
pr.AddToTaskQueue()
1087-
}
1088-
}
1089-
1090-
// AddTestPullRequestTask adds new test tasks by given head/base repository and head/base branch,
1091-
// and generate new patch for testing as needed.
1092-
func AddTestPullRequestTask(doer *User, repoID int64, branch string, isSync bool) {
1093-
log.Trace("AddTestPullRequestTask [head_repo_id: %d, head_branch: %s]: finding pull requests", repoID, branch)
1094-
prs, err := GetUnmergedPullRequestsByHeadInfo(repoID, branch)
1095-
if err != nil {
1096-
log.Error("Find pull requests [head_repo_id: %d, head_branch: %s]: %v", repoID, branch, err)
1097-
return
1098-
}
1099-
1100-
if isSync {
1101-
requests := PullRequestList(prs)
1102-
if err = requests.LoadAttributes(); err != nil {
1103-
log.Error("PullRequestList.LoadAttributes: %v", err)
1104-
}
1105-
if invalidationErr := checkForInvalidation(requests, repoID, doer, branch); invalidationErr != nil {
1106-
log.Error("checkForInvalidation: %v", invalidationErr)
1107-
}
1108-
if err == nil {
1109-
for _, pr := range prs {
1110-
pr.Issue.PullRequest = pr
1111-
if err = pr.Issue.LoadAttributes(); err != nil {
1112-
log.Error("LoadAttributes: %v", err)
1113-
continue
1114-
}
1115-
if err = PrepareWebhooks(pr.Issue.Repo, HookEventPullRequest, &api.PullRequestPayload{
1116-
Action: api.HookIssueSynchronized,
1117-
Index: pr.Issue.Index,
1118-
PullRequest: pr.Issue.PullRequest.APIFormat(),
1119-
Repository: pr.Issue.Repo.APIFormat(AccessModeNone),
1120-
Sender: doer.APIFormat(),
1121-
}); err != nil {
1122-
log.Error("PrepareWebhooks [pull_id: %v]: %v", pr.ID, err)
1123-
continue
1124-
}
1125-
go HookQueue.Add(pr.Issue.Repo.ID)
1126-
}
1127-
}
1128-
1129-
}
1130-
1131-
addHeadRepoTasks(prs)
1132-
1133-
log.Trace("AddTestPullRequestTask [base_repo_id: %d, base_branch: %s]: finding pull requests", repoID, branch)
1134-
prs, err = GetUnmergedPullRequestsByBaseInfo(repoID, branch)
1135-
if err != nil {
1136-
log.Error("Find pull requests [base_repo_id: %d, base_branch: %s]: %v", repoID, branch, err)
1137-
return
1138-
}
1139-
for _, pr := range prs {
1140-
pr.AddToTaskQueue()
1141-
}
1142-
}
1143-
1144-
func checkForInvalidation(requests PullRequestList, repoID int64, doer *User, branch string) error {
1145-
repo, err := GetRepositoryByID(repoID)
1146-
if err != nil {
1147-
return fmt.Errorf("GetRepositoryByID: %v", err)
1148-
}
1149-
gitRepo, err := git.OpenRepository(repo.RepoPath())
1150-
if err != nil {
1151-
return fmt.Errorf("git.OpenRepository: %v", err)
1152-
}
1153-
go func() {
1154-
err := requests.InvalidateCodeComments(doer, gitRepo, branch)
1155-
if err != nil {
1156-
log.Error("PullRequestList.InvalidateCodeComments: %v", err)
1157-
}
1158-
}()
1159-
return nil
1160-
}
1161-
11621075
// ChangeUsernameInPullRequests changes the name of head_user_name
11631076
func ChangeUsernameInPullRequests(oldUserName, newUserName string) error {
11641077
pr := PullRequest{

modules/repofiles/update.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"code.gitea.io/gitea/modules/log"
2020
"code.gitea.io/gitea/modules/setting"
2121
"code.gitea.io/gitea/modules/structs"
22+
pull_service "code.gitea.io/gitea/services/pull"
2223

2324
stdcharset "golang.org/x/net/html/charset"
2425
"golang.org/x/text/transform"
@@ -498,7 +499,7 @@ func PushUpdate(repo *models.Repository, branch string, opts models.PushUpdateOp
498499

499500
log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name)
500501

501-
go models.AddTestPullRequestTask(pusher, repo.ID, branch, true)
502+
go pull_service.AddTestPullRequestTask(pusher, repo.ID, branch, true)
502503

503504
if opts.RefFullName == git.BranchPrefix+repo.DefaultBranch {
504505
models.UpdateRepoIndexer(repo)

routers/repo/pull.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ func TriggerTask(ctx *context.Context) {
820820
log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name)
821821

822822
go models.HookQueue.Add(repo.ID)
823-
go models.AddTestPullRequestTask(pusher, repo.ID, branch, true)
823+
go pull_service.AddTestPullRequestTask(pusher, repo.ID, branch, true)
824824
ctx.Status(202)
825825
}
826826

services/pull/merge.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func Merge(pr *models.PullRequest, doer *models.User, baseGitRepo *git.Repositor
5050
}
5151

5252
defer func() {
53-
go models.AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false)
53+
go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false)
5454
}()
5555

5656
// Clone base repo.

services/pull/pull.go

+88
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"fmt"
99

1010
"code.gitea.io/gitea/models"
11+
"code.gitea.io/gitea/modules/git"
1112
"code.gitea.io/gitea/modules/log"
1213
api "code.gitea.io/gitea/modules/structs"
1314
)
@@ -47,3 +48,90 @@ func NewPullRequest(repo *models.Repository, pull *models.Issue, labelIDs []int6
4748

4849
return nil
4950
}
51+
52+
func checkForInvalidation(requests models.PullRequestList, repoID int64, doer *models.User, branch string) error {
53+
repo, err := models.GetRepositoryByID(repoID)
54+
if err != nil {
55+
return fmt.Errorf("GetRepositoryByID: %v", err)
56+
}
57+
gitRepo, err := git.OpenRepository(repo.RepoPath())
58+
if err != nil {
59+
return fmt.Errorf("git.OpenRepository: %v", err)
60+
}
61+
go func() {
62+
err := requests.InvalidateCodeComments(doer, gitRepo, branch)
63+
if err != nil {
64+
log.Error("PullRequestList.InvalidateCodeComments: %v", err)
65+
}
66+
}()
67+
return nil
68+
}
69+
70+
func addHeadRepoTasks(prs []*models.PullRequest) {
71+
for _, pr := range prs {
72+
log.Trace("addHeadRepoTasks[%d]: composing new test task", pr.ID)
73+
if err := pr.UpdatePatch(); err != nil {
74+
log.Error("UpdatePatch: %v", err)
75+
continue
76+
} else if err := pr.PushToBaseRepo(); err != nil {
77+
log.Error("PushToBaseRepo: %v", err)
78+
continue
79+
}
80+
81+
pr.AddToTaskQueue()
82+
}
83+
}
84+
85+
// AddTestPullRequestTask adds new test tasks by given head/base repository and head/base branch,
86+
// and generate new patch for testing as needed.
87+
func AddTestPullRequestTask(doer *models.User, repoID int64, branch string, isSync bool) {
88+
log.Trace("AddTestPullRequestTask [head_repo_id: %d, head_branch: %s]: finding pull requests", repoID, branch)
89+
prs, err := models.GetUnmergedPullRequestsByHeadInfo(repoID, branch)
90+
if err != nil {
91+
log.Error("Find pull requests [head_repo_id: %d, head_branch: %s]: %v", repoID, branch, err)
92+
return
93+
}
94+
95+
if isSync {
96+
requests := models.PullRequestList(prs)
97+
if err = requests.LoadAttributes(); err != nil {
98+
log.Error("PullRequestList.LoadAttributes: %v", err)
99+
}
100+
if invalidationErr := checkForInvalidation(requests, repoID, doer, branch); invalidationErr != nil {
101+
log.Error("checkForInvalidation: %v", invalidationErr)
102+
}
103+
if err == nil {
104+
for _, pr := range prs {
105+
pr.Issue.PullRequest = pr
106+
if err = pr.Issue.LoadAttributes(); err != nil {
107+
log.Error("LoadAttributes: %v", err)
108+
continue
109+
}
110+
if err = models.PrepareWebhooks(pr.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
111+
Action: api.HookIssueSynchronized,
112+
Index: pr.Issue.Index,
113+
PullRequest: pr.Issue.PullRequest.APIFormat(),
114+
Repository: pr.Issue.Repo.APIFormat(models.AccessModeNone),
115+
Sender: doer.APIFormat(),
116+
}); err != nil {
117+
log.Error("PrepareWebhooks [pull_id: %v]: %v", pr.ID, err)
118+
continue
119+
}
120+
go models.HookQueue.Add(pr.Issue.Repo.ID)
121+
}
122+
}
123+
124+
}
125+
126+
addHeadRepoTasks(prs)
127+
128+
log.Trace("AddTestPullRequestTask [base_repo_id: %d, base_branch: %s]: finding pull requests", repoID, branch)
129+
prs, err = models.GetUnmergedPullRequestsByBaseInfo(repoID, branch)
130+
if err != nil {
131+
log.Error("Find pull requests [base_repo_id: %d, base_branch: %s]: %v", repoID, branch, err)
132+
return
133+
}
134+
for _, pr := range prs {
135+
pr.AddToTaskQueue()
136+
}
137+
}

0 commit comments

Comments
 (0)