Fix wrong original git service type on a migrated repository (#9693)
This commit is contained in:
		
							parent
							
								
									3143bb10da
								
							
						
					
					
						commit
						7a3a90aca3
					
				
					 7 changed files with 76 additions and 44 deletions
				
			
		|  | @ -292,6 +292,8 @@ var migrations = []Migration{ | |||
| 	NewMigration("Add block on rejected reviews branch protection", addBlockOnRejectedReviews), | ||||
| 	// v118 -> v119
 | ||||
| 	NewMigration("Add commit id and stale to reviews", addReviewCommitAndStale), | ||||
| 	// v119 -> v120
 | ||||
| 	NewMigration("Fix migrated repositories' git service type", fixMigratedRepositoryServiceType), | ||||
| } | ||||
| 
 | ||||
| // Migrate database to current version
 | ||||
|  |  | |||
							
								
								
									
										16
									
								
								models/migrations/v119.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								models/migrations/v119.go
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| // Copyright 2020 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 ( | ||||
| 	"code.gitea.io/gitea/modules/structs" | ||||
| 
 | ||||
| 	"xorm.io/xorm" | ||||
| ) | ||||
| 
 | ||||
| func fixMigratedRepositoryServiceType(x *xorm.Engine) error { | ||||
| 	_, err := x.Exec("UPDATE repository SET original_service_type = ? WHERE original_url LIKE 'https://github.com/%'", structs.GithubService) | ||||
| 	return err | ||||
| } | ||||
|  | @ -1074,6 +1074,7 @@ type CreateRepoOptions struct { | |||
| 	Name           string | ||||
| 	Description    string | ||||
| 	OriginalURL    string | ||||
| 	GitServiceType structs.GitServiceType | ||||
| 	Gitignores     string | ||||
| 	IssueLabels    string | ||||
| 	License        string | ||||
|  | @ -1369,6 +1370,7 @@ func CreateRepository(doer, u *User, opts CreateRepoOptions) (_ *Repository, err | |||
| 		LowerName:                       strings.ToLower(opts.Name), | ||||
| 		Description:                     opts.Description, | ||||
| 		OriginalURL:                     opts.OriginalURL, | ||||
| 		OriginalServiceType:             opts.GitServiceType, | ||||
| 		IsPrivate:                       opts.IsPrivate, | ||||
| 		IsFsckEnabled:                   !opts.IsMirror, | ||||
| 		CloseIssuesViaCommitInAnyBranch: setting.Repository.DefaultCloseIssuesViaCommitsInAnyBranch, | ||||
|  |  | |||
|  | @ -197,6 +197,7 @@ func CreateMigrateTask(doer, u *User, opts base.MigrateOptions) (*Task, error) { | |||
| 		Name:           opts.RepoName, | ||||
| 		Description:    opts.Description, | ||||
| 		OriginalURL:    opts.OriginalURL, | ||||
| 		GitServiceType: opts.GitServiceType, | ||||
| 		IsPrivate:      opts.Private, | ||||
| 		IsMirror:       opts.Mirror, | ||||
| 		Status:         RepositoryBeingMigrated, | ||||
|  |  | |||
|  | @ -104,6 +104,7 @@ func (g *GiteaLocalUploader) CreateRepo(repo *base.Repository, opts base.Migrate | |||
| 			Name:           g.repoName, | ||||
| 			Description:    repo.Description, | ||||
| 			OriginalURL:    repo.OriginalURL, | ||||
| 			GitServiceType: opts.GitServiceType, | ||||
| 			IsPrivate:      opts.Private, | ||||
| 			IsMirror:       opts.Mirror, | ||||
| 			Status:         models.RepositoryBeingMigrated, | ||||
|  |  | |||
|  | @ -488,6 +488,7 @@ func Migrate(ctx *context.APIContext, form auth.MigrateRepoForm) { | |||
| 		Name:           opts.RepoName, | ||||
| 		Description:    opts.Description, | ||||
| 		OriginalURL:    form.CloneAddr, | ||||
| 		GitServiceType: gitServiceType, | ||||
| 		IsPrivate:      opts.Private, | ||||
| 		IsMirror:       opts.Mirror, | ||||
| 		Status:         models.RepositoryBeingMigrated, | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ package repo | |||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"net/url" | ||||
| 	"os" | ||||
| 	"path" | ||||
| 	"strings" | ||||
|  | @ -18,6 +19,7 @@ import ( | |||
| 	"code.gitea.io/gitea/modules/log" | ||||
| 	"code.gitea.io/gitea/modules/migrations" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/structs" | ||||
| 	"code.gitea.io/gitea/modules/task" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 	repo_service "code.gitea.io/gitea/services/repository" | ||||
|  | @ -330,8 +332,15 @@ func MigratePost(ctx *context.Context, form auth.MigrateRepoForm) { | |||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	var gitServiceType = structs.PlainGitService | ||||
| 	u, err := url.Parse(form.CloneAddr) | ||||
| 	if err == nil && strings.EqualFold(u.Host, "github.com") { | ||||
| 		gitServiceType = structs.GithubService | ||||
| 	} | ||||
| 
 | ||||
| 	var opts = migrations.MigrateOptions{ | ||||
| 		OriginalURL:    form.CloneAddr, | ||||
| 		GitServiceType: gitServiceType, | ||||
| 		CloneAddr:      remoteAddr, | ||||
| 		RepoName:       form.RepoName, | ||||
| 		Description:    form.Description, | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue