mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Backport #19132 Make SKIP_TLS_VERIFY apply to git data migrations too through adding the `-c http.sslVerify=false` option to the git clone command. Fix #18998 Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		@@ -97,15 +97,16 @@ func (repo *Repository) IsEmpty() (bool, error) {
 | 
			
		||||
 | 
			
		||||
// CloneRepoOptions options when clone a repository
 | 
			
		||||
type CloneRepoOptions struct {
 | 
			
		||||
	Timeout    time.Duration
 | 
			
		||||
	Mirror     bool
 | 
			
		||||
	Bare       bool
 | 
			
		||||
	Quiet      bool
 | 
			
		||||
	Branch     string
 | 
			
		||||
	Shared     bool
 | 
			
		||||
	NoCheckout bool
 | 
			
		||||
	Depth      int
 | 
			
		||||
	Filter     string
 | 
			
		||||
	Timeout       time.Duration
 | 
			
		||||
	Mirror        bool
 | 
			
		||||
	Bare          bool
 | 
			
		||||
	Quiet         bool
 | 
			
		||||
	Branch        string
 | 
			
		||||
	Shared        bool
 | 
			
		||||
	NoCheckout    bool
 | 
			
		||||
	Depth         int
 | 
			
		||||
	Filter        string
 | 
			
		||||
	SkipTLSVerify bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Clone clones original repository to target path.
 | 
			
		||||
@@ -128,6 +129,9 @@ func CloneWithArgs(ctx context.Context, from, to string, args []string, opts Clo
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmd := NewCommandContextNoGlobals(ctx, args...).AddArguments("clone")
 | 
			
		||||
	if opts.SkipTLSVerify {
 | 
			
		||||
		cmd.AddArguments("-c", "http.sslVerify=false")
 | 
			
		||||
	}
 | 
			
		||||
	if opts.Mirror {
 | 
			
		||||
		cmd.AddArguments("--mirror")
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -72,9 +72,10 @@ func MigrateRepositoryGitData(ctx context.Context, u *user_model.User,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err = git.CloneWithContext(ctx, opts.CloneAddr, repoPath, git.CloneRepoOptions{
 | 
			
		||||
		Mirror:  true,
 | 
			
		||||
		Quiet:   true,
 | 
			
		||||
		Timeout: migrateTimeout,
 | 
			
		||||
		Mirror:        true,
 | 
			
		||||
		Quiet:         true,
 | 
			
		||||
		Timeout:       migrateTimeout,
 | 
			
		||||
		SkipTLSVerify: setting.Migrations.SkipTLSVerify,
 | 
			
		||||
	}); err != nil {
 | 
			
		||||
		return repo, fmt.Errorf("Clone: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
@@ -88,10 +89,11 @@ func MigrateRepositoryGitData(ctx context.Context, u *user_model.User,
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if err = git.CloneWithContext(ctx, wikiRemotePath, wikiPath, git.CloneRepoOptions{
 | 
			
		||||
				Mirror:  true,
 | 
			
		||||
				Quiet:   true,
 | 
			
		||||
				Timeout: migrateTimeout,
 | 
			
		||||
				Branch:  "master",
 | 
			
		||||
				Mirror:        true,
 | 
			
		||||
				Quiet:         true,
 | 
			
		||||
				Timeout:       migrateTimeout,
 | 
			
		||||
				Branch:        "master",
 | 
			
		||||
				SkipTLSVerify: setting.Migrations.SkipTLSVerify,
 | 
			
		||||
			}); err != nil {
 | 
			
		||||
				log.Warn("Clone wiki: %v", err)
 | 
			
		||||
				if err := util.RemoveAll(wikiPath); err != nil {
 | 
			
		||||
@@ -310,7 +312,7 @@ func PushUpdateAddTag(repo *repo_model.Repository, gitRepo *git.Repository, tagN
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var author *user_model.User
 | 
			
		||||
	var createdAt = time.Unix(1, 0)
 | 
			
		||||
	createdAt := time.Unix(1, 0)
 | 
			
		||||
 | 
			
		||||
	if sig != nil {
 | 
			
		||||
		author, err = user_model.GetUserByEmail(sig.Email)
 | 
			
		||||
@@ -325,7 +327,7 @@ func PushUpdateAddTag(repo *repo_model.Repository, gitRepo *git.Repository, tagN
 | 
			
		||||
		return fmt.Errorf("unable to get CommitsCount: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var rel = models.Release{
 | 
			
		||||
	rel := models.Release{
 | 
			
		||||
		RepoID:       repo.ID,
 | 
			
		||||
		TagName:      tagName,
 | 
			
		||||
		LowerTagName: strings.ToLower(tagName),
 | 
			
		||||
 
 | 
			
		||||
@@ -22,14 +22,13 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
	base "code.gitea.io/gitea/modules/migration"
 | 
			
		||||
	"code.gitea.io/gitea/modules/repository"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/structs"
 | 
			
		||||
 | 
			
		||||
	"gopkg.in/yaml.v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	_ base.Uploader = &RepositoryDumper{}
 | 
			
		||||
)
 | 
			
		||||
var _ base.Uploader = &RepositoryDumper{}
 | 
			
		||||
 | 
			
		||||
// RepositoryDumper implements an Uploader to the local directory
 | 
			
		||||
type RepositoryDumper struct {
 | 
			
		||||
@@ -151,9 +150,10 @@ func (g *RepositoryDumper) CreateRepo(repo *base.Repository, opts base.MigrateOp
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = git.Clone(remoteAddr, repoPath, git.CloneRepoOptions{
 | 
			
		||||
		Mirror:  true,
 | 
			
		||||
		Quiet:   true,
 | 
			
		||||
		Timeout: migrateTimeout,
 | 
			
		||||
		Mirror:        true,
 | 
			
		||||
		Quiet:         true,
 | 
			
		||||
		Timeout:       migrateTimeout,
 | 
			
		||||
		SkipTLSVerify: setting.Migrations.SkipTLSVerify,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("Clone: %v", err)
 | 
			
		||||
@@ -168,10 +168,11 @@ func (g *RepositoryDumper) CreateRepo(repo *base.Repository, opts base.MigrateOp
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if err := git.Clone(wikiRemotePath, wikiPath, git.CloneRepoOptions{
 | 
			
		||||
				Mirror:  true,
 | 
			
		||||
				Quiet:   true,
 | 
			
		||||
				Timeout: migrateTimeout,
 | 
			
		||||
				Branch:  "master",
 | 
			
		||||
				Mirror:        true,
 | 
			
		||||
				Quiet:         true,
 | 
			
		||||
				Timeout:       migrateTimeout,
 | 
			
		||||
				Branch:        "master",
 | 
			
		||||
				SkipTLSVerify: setting.Migrations.SkipTLSVerify,
 | 
			
		||||
			}); err != nil {
 | 
			
		||||
				log.Warn("Clone wiki: %v", err)
 | 
			
		||||
				if err := os.RemoveAll(wikiPath); err != nil {
 | 
			
		||||
@@ -403,7 +404,7 @@ func (g *RepositoryDumper) createItems(dir string, itemFiles map[int64]*os.File,
 | 
			
		||||
 | 
			
		||||
// CreateComments creates comments of issues
 | 
			
		||||
func (g *RepositoryDumper) CreateComments(comments ...*base.Comment) error {
 | 
			
		||||
	var commentsMap = make(map[int64][]interface{}, len(comments))
 | 
			
		||||
	commentsMap := make(map[int64][]interface{}, len(comments))
 | 
			
		||||
	for _, comment := range comments {
 | 
			
		||||
		commentsMap[comment.IssueIndex] = append(commentsMap[comment.IssueIndex], comment)
 | 
			
		||||
	}
 | 
			
		||||
@@ -532,7 +533,7 @@ func (g *RepositoryDumper) CreatePullRequests(prs ...*base.PullRequest) error {
 | 
			
		||||
 | 
			
		||||
// CreateReviews create pull request reviews
 | 
			
		||||
func (g *RepositoryDumper) CreateReviews(reviews ...*base.Review) error {
 | 
			
		||||
	var reviewsMap = make(map[int64][]interface{}, len(reviews))
 | 
			
		||||
	reviewsMap := make(map[int64][]interface{}, len(reviews))
 | 
			
		||||
	for _, review := range reviews {
 | 
			
		||||
		reviewsMap[review.IssueIndex] = append(reviewsMap[review.IssueIndex], review)
 | 
			
		||||
	}
 | 
			
		||||
@@ -611,7 +612,7 @@ func RestoreRepository(ctx context.Context, baseDir, ownerName, repoName string,
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	var uploader = NewGiteaLocalUploader(ctx, doer, ownerName, repoName)
 | 
			
		||||
	uploader := NewGiteaLocalUploader(ctx, doer, ownerName, repoName)
 | 
			
		||||
	downloader, err := NewRepositoryRestorer(ctx, baseDir, ownerName, repoName)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -622,7 +623,7 @@ func RestoreRepository(ctx context.Context, baseDir, ownerName, repoName string,
 | 
			
		||||
	}
 | 
			
		||||
	tp, _ := strconv.Atoi(opts["service_type"])
 | 
			
		||||
 | 
			
		||||
	var migrateOpts = base.MigrateOptions{
 | 
			
		||||
	migrateOpts := base.MigrateOptions{
 | 
			
		||||
		GitServiceType: structs.GitServiceType(tp),
 | 
			
		||||
	}
 | 
			
		||||
	updateOptionsUnits(&migrateOpts, units)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user