File tree Expand file tree Collapse file tree 1 file changed +46
-1
lines changed Expand file tree Collapse file tree 1 file changed +46
-1
lines changed Original file line number Diff line number Diff line change 5
5
package migrations
6
6
7
7
import (
8
+ "fmt"
9
+
10
+ "code.gitea.io/gitea/models"
11
+ "code.gitea.io/gitea/modules/setting"
12
+ pull_service "code.gitea.io/gitea/services/pull"
13
+
8
14
"xorm.io/xorm"
9
15
)
10
16
@@ -13,5 +19,44 @@ func addCommitDivergenceToPulls(x *xorm.Engine) error {
13
19
CommitsAhead int
14
20
CommitsBehind int
15
21
}
16
- return x .Sync2 (new (PullRequest ))
22
+ if err := x .Sync2 (new (PullRequest )); err != nil {
23
+ return fmt .Errorf ("Sync2: %v" , err )
24
+ }
25
+
26
+ var last int
27
+ batchSize := setting .Database .IterateBufferSize
28
+ sess := x .NewSession ()
29
+ defer sess .Close ()
30
+ for {
31
+ if err := sess .Begin (); err != nil {
32
+ return err
33
+ }
34
+ var results = make ([]* models.PullRequest , 0 , batchSize )
35
+ err := sess .Where ("has_merged = ?" , false ).OrderBy ("id" ).Limit (batchSize , last ).Find (& results )
36
+ if err != nil {
37
+ return err
38
+ }
39
+ if len (results ) == 0 {
40
+ break
41
+ }
42
+ last += len (results )
43
+
44
+ for _ , pr := range results {
45
+ divergence , err := pull_service .GetDiverging (pr )
46
+ if err != nil {
47
+ return fmt .Errorf ("GetDiverging: %v" , err )
48
+ } else {
49
+ pr .CommitsAhead = divergence .Ahead
50
+ pr .CommitsBehind = divergence .Behind
51
+ if _ , err = sess .ID (pr .ID ).Cols ("commits_ahead" , "commits_behind" ).Update (pr ); err != nil {
52
+ return fmt .Errorf ("Update Cols: %v" , err )
53
+ }
54
+ }
55
+ }
56
+
57
+ if err := sess .Commit (); err != nil {
58
+ return err
59
+ }
60
+ }
61
+ return nil
17
62
}
You can’t perform that action at this time.
0 commit comments