@@ -10,6 +10,7 @@ import (
10
10
"fmt"
11
11
"strconv"
12
12
"strings"
13
+ "time"
13
14
14
15
"code.gitea.io/gitea/models"
15
16
"code.gitea.io/gitea/models/db"
@@ -43,20 +44,53 @@ var (
43
44
)
44
45
45
46
// AddToTaskQueue adds itself to pull request test task queue.
46
- func AddToTaskQueue (pr * issues_model.PullRequest ) {
47
+ func setStatusChecking (pr * issues_model.PullRequest ) bool {
47
48
pr .Status = issues_model .PullRequestStatusChecking
48
49
err := pr .UpdateColsIfNotMerged (db .DefaultContext , "status" )
49
50
if err != nil {
50
51
log .Error ("AddToTaskQueue(%-v).UpdateCols.(add to queue): %v" , pr , err )
51
- return
52
+ return false
52
53
}
54
+ return true
55
+ }
56
+
57
+ func addToTaskQueue (pr * issues_model.PullRequest ) {
53
58
log .Trace ("Adding %-v to the test pull requests queue" , pr )
54
- err = prPatchCheckerQueue .Push (strconv .FormatInt (pr .ID , 10 ))
59
+ err : = prPatchCheckerQueue .Push (strconv .FormatInt (pr .ID , 10 ))
55
60
if err != nil && err != queue .ErrAlreadyInQueue {
56
61
log .Error ("Error adding %-v to the test pull requests queue: %v" , pr , err )
57
62
}
58
63
}
59
64
65
+ func AddToTaskQueueOnView (pr * issues_model.PullRequest ) {
66
+ if pr .Status == issues_model .PullRequestStatusChecking {
67
+ addToTaskQueue (pr )
68
+ }
69
+ }
70
+
71
+ func AddToTaskQueueOnBaseUpdate (ctx context.Context , pr * issues_model.PullRequest ) {
72
+ // Blender: don't immediately check PRs older than a week, instead check when
73
+ // the page is loaded.
74
+ if ! setStatusChecking (pr ) {
75
+ return
76
+ }
77
+ if err := pr .LoadIssue (ctx ); err != nil {
78
+ return
79
+ }
80
+ if pr .Issue .UpdatedUnix .AddDuration (24 * time .Hour ) < timeutil .TimeStampNow () {
81
+ log .Trace ("Delaying %-v patch checking because it was not updated recently" , pr )
82
+ return
83
+ }
84
+
85
+ addToTaskQueue (pr )
86
+ }
87
+
88
+ func AddToTaskQueue (pr * issues_model.PullRequest ) {
89
+ if setStatusChecking (pr ) {
90
+ addToTaskQueue (pr )
91
+ }
92
+ }
93
+
60
94
type MergeCheckType int
61
95
62
96
const (
0 commit comments