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 | ||||
| 
 | ||||
| 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" | ||||
| 
 | ||||
| 	jsoniter "github.com/json-iterator/go" | ||||
|  | @ -16,20 +13,38 @@ import ( | |||
| ) | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| 	// only match migration tasks, that are not pending or running
 | ||||
| 	cond := builder.Eq{ | ||||
| 		"type": structs.TaskTypeMigrateRepo, | ||||
| 		"type": TaskTypeMigrateRepo, | ||||
| 	}.And(builder.Gte{ | ||||
| 		"status": structs.TaskStatusStopped, | ||||
| 		"status": TaskStatusStopped, | ||||
| 	}) | ||||
| 
 | ||||
| 	sess := x.NewSession() | ||||
| 	defer sess.Close() | ||||
| 
 | ||||
| 	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 { | ||||
| 			return | ||||
| 		} | ||||
|  | @ -55,7 +70,41 @@ func deleteMigrationCredentials(x *xorm.Engine) (err 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 | ||||
| 	err := json.Unmarshal([]byte(payload), &opts) | ||||
| 	if err != nil { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue