v180 migration should be standalone (#16151)
Unfortunately the v180 migration picked up a few non-standalone dependencies. This PR forcibly copies the important parts back into the migration. Fix #16150 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
parent
f374789fe2
commit
15fbf23d13
1 changed files with 56 additions and 7 deletions
|
@ -5,9 +5,6 @@
|
||||||
package migrations
|
package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"code.gitea.io/gitea/models"
|
|
||||||
"code.gitea.io/gitea/modules/migrations/base"
|
|
||||||
"code.gitea.io/gitea/modules/structs"
|
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
|
@ -16,20 +13,38 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func deleteMigrationCredentials(x *xorm.Engine) (err error) {
|
func deleteMigrationCredentials(x *xorm.Engine) (err error) {
|
||||||
|
// Task represents a task
|
||||||
|
type Task struct {
|
||||||
|
ID int64
|
||||||
|
DoerID int64 `xorm:"index"` // operator
|
||||||
|
OwnerID int64 `xorm:"index"` // repo owner id, when creating, the repoID maybe zero
|
||||||
|
RepoID int64 `xorm:"index"`
|
||||||
|
Type int
|
||||||
|
Status int `xorm:"index"`
|
||||||
|
StartTime int64
|
||||||
|
EndTime int64
|
||||||
|
PayloadContent string `xorm:"TEXT"`
|
||||||
|
Errors string `xorm:"TEXT"` // if task failed, saved the error reason
|
||||||
|
Created int64 `xorm:"created"`
|
||||||
|
}
|
||||||
|
|
||||||
|
const TaskTypeMigrateRepo = 0
|
||||||
|
const TaskStatusStopped = 2
|
||||||
|
|
||||||
const batchSize = 100
|
const batchSize = 100
|
||||||
|
|
||||||
// only match migration tasks, that are not pending or running
|
// only match migration tasks, that are not pending or running
|
||||||
cond := builder.Eq{
|
cond := builder.Eq{
|
||||||
"type": structs.TaskTypeMigrateRepo,
|
"type": TaskTypeMigrateRepo,
|
||||||
}.And(builder.Gte{
|
}.And(builder.Gte{
|
||||||
"status": structs.TaskStatusStopped,
|
"status": TaskStatusStopped,
|
||||||
})
|
})
|
||||||
|
|
||||||
sess := x.NewSession()
|
sess := x.NewSession()
|
||||||
defer sess.Close()
|
defer sess.Close()
|
||||||
|
|
||||||
for start := 0; ; start += batchSize {
|
for start := 0; ; start += batchSize {
|
||||||
tasks := make([]*models.Task, 0, batchSize)
|
tasks := make([]*Task, 0, batchSize)
|
||||||
if err = sess.Limit(batchSize, start).Where(cond, 0).Find(&tasks); err != nil {
|
if err = sess.Limit(batchSize, start).Where(cond, 0).Find(&tasks); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -55,7 +70,41 @@ func deleteMigrationCredentials(x *xorm.Engine) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func removeCredentials(payload string) (string, error) {
|
func removeCredentials(payload string) (string, error) {
|
||||||
var opts base.MigrateOptions
|
// MigrateOptions defines the way a repository gets migrated
|
||||||
|
// this is for internal usage by migrations module and func who interact with it
|
||||||
|
type MigrateOptions struct {
|
||||||
|
// required: true
|
||||||
|
CloneAddr string `json:"clone_addr" binding:"Required"`
|
||||||
|
CloneAddrEncrypted string `json:"clone_addr_encrypted,omitempty"`
|
||||||
|
AuthUsername string `json:"auth_username"`
|
||||||
|
AuthPassword string `json:"-"`
|
||||||
|
AuthPasswordEncrypted string `json:"auth_password_encrypted,omitempty"`
|
||||||
|
AuthToken string `json:"-"`
|
||||||
|
AuthTokenEncrypted string `json:"auth_token_encrypted,omitempty"`
|
||||||
|
// required: true
|
||||||
|
UID int `json:"uid" binding:"Required"`
|
||||||
|
// required: true
|
||||||
|
RepoName string `json:"repo_name" binding:"Required"`
|
||||||
|
Mirror bool `json:"mirror"`
|
||||||
|
LFS bool `json:"lfs"`
|
||||||
|
LFSEndpoint string `json:"lfs_endpoint"`
|
||||||
|
Private bool `json:"private"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
OriginalURL string
|
||||||
|
GitServiceType int
|
||||||
|
Wiki bool
|
||||||
|
Issues bool
|
||||||
|
Milestones bool
|
||||||
|
Labels bool
|
||||||
|
Releases bool
|
||||||
|
Comments bool
|
||||||
|
PullRequests bool
|
||||||
|
ReleaseAssets bool
|
||||||
|
MigrateToRepoID int64
|
||||||
|
MirrorInterval string `json:"mirror_interval"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var opts MigrateOptions
|
||||||
json := jsoniter.ConfigCompatibleWithStandardLibrary
|
json := jsoniter.ConfigCompatibleWithStandardLibrary
|
||||||
err := json.Unmarshal([]byte(payload), &opts)
|
err := json.Unmarshal([]byte(payload), &opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Reference in a new issue