summaryrefslogtreecommitdiffstats
path: root/models/migrations
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-06-30 15:57:59 +0800
committerzeripath <art27@cantab.net>2019-06-30 08:57:59 +0100
commitff85dd3e12c05be98d9132de2e629523d096f712 (patch)
treec0b5d69eef2fd859204437bd8b206e06a7b8a47d /models/migrations
parent1e46eedce721e22e3e1e94eec6e0afccd36147c1 (diff)
downloadgitea-ff85dd3e12c05be98d9132de2e629523d096f712.tar.gz
gitea-ff85dd3e12c05be98d9132de2e629523d096f712.zip
Add commit statuses reports on pull request view (#6845)
* Add commit statuses reports on pull view * Add some translations * improve the UI * fix fmt * fix tests * add a new test git repo to fix tests * fix bug when headRepo or headBranch missing * fix tests * fix tests * fix consistency * fix tests * fix tests * change the test repo * fix tests * fix tests * fix migration * keep db size consistency * fix translation * change commit hash status table unique index * remove unused table * use char instead varchar * make hashCommitStatusContext private * split merge section with status check on pull view ui * fix tests; fix arc-green theme on pull ui
Diffstat (limited to 'models/migrations')
-rw-r--r--models/migrations/migrations.go2
-rw-r--r--models/migrations/v87.go2
-rw-r--r--models/migrations/v88.go66
3 files changed, 69 insertions, 1 deletions
diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go
index e8fb42c492..7a5b0c4184 100644
--- a/models/migrations/migrations.go
+++ b/models/migrations/migrations.go
@@ -229,6 +229,8 @@ var migrations = []Migration{
NewMigration("add http method to webhook", addHTTPMethodToWebhook),
// v87 -> v88
NewMigration("add avatar field to repository", addAvatarFieldToRepository),
+ // v88 -> v89
+ NewMigration("add commit status context field to commit_status", addCommitStatusContext),
}
// Migrate database to current version
diff --git a/models/migrations/v87.go b/models/migrations/v87.go
index 94711ac669..c8c7011a08 100644
--- a/models/migrations/v87.go
+++ b/models/migrations/v87.go
@@ -1,4 +1,4 @@
-// Copyright 2019 Gitea. All rights reserved.
+// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
diff --git a/models/migrations/v88.go b/models/migrations/v88.go
new file mode 100644
index 0000000000..fef425db0a
--- /dev/null
+++ b/models/migrations/v88.go
@@ -0,0 +1,66 @@
+// Copyright 2019 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package migrations
+
+import (
+ "crypto/sha1"
+ "fmt"
+
+ "github.com/go-xorm/xorm"
+)
+
+func hashContext(context string) string {
+ return fmt.Sprintf("%x", sha1.Sum([]byte(context)))
+}
+
+func addCommitStatusContext(x *xorm.Engine) error {
+ type CommitStatus struct {
+ ID int64 `xorm:"pk autoincr"`
+ ContextHash string `xorm:"char(40) index"`
+ Context string `xorm:"TEXT"`
+ }
+
+ if err := x.Sync2(new(CommitStatus)); err != nil {
+ return err
+ }
+
+ sess := x.NewSession()
+ defer sess.Close()
+
+ var start = 0
+ for {
+ var statuses = make([]*CommitStatus, 0, 100)
+ err := sess.OrderBy("id").Limit(100, start).Find(&statuses)
+ if err != nil {
+ return err
+ }
+ if len(statuses) == 0 {
+ break
+ }
+
+ if err = sess.Begin(); err != nil {
+ return err
+ }
+
+ for _, status := range statuses {
+ status.ContextHash = hashContext(status.Context)
+ if _, err := sess.ID(status.ID).Cols("context_hash").Update(status); err != nil {
+ return err
+ }
+ }
+
+ if err := sess.Commit(); err != nil {
+ return err
+ }
+
+ if len(statuses) < 100 {
+ break
+ }
+
+ start += len(statuses)
+ }
+
+ return nil
+}