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:
parent
5bb0c92b6c
commit
e6d46eeb55
3 changed files with 39 additions and 32 deletions
|
@ -97,15 +97,16 @@ func (repo *Repository) IsEmpty() (bool, error) {
|
||||||
|
|
||||||
// CloneRepoOptions options when clone a repository
|
// CloneRepoOptions options when clone a repository
|
||||||
type CloneRepoOptions struct {
|
type CloneRepoOptions struct {
|
||||||
Timeout time.Duration
|
Timeout time.Duration
|
||||||
Mirror bool
|
Mirror bool
|
||||||
Bare bool
|
Bare bool
|
||||||
Quiet bool
|
Quiet bool
|
||||||
Branch string
|
Branch string
|
||||||
Shared bool
|
Shared bool
|
||||||
NoCheckout bool
|
NoCheckout bool
|
||||||
Depth int
|
Depth int
|
||||||
Filter string
|
Filter string
|
||||||
|
SkipTLSVerify bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clone clones original repository to target path.
|
// 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")
|
cmd := NewCommandContextNoGlobals(ctx, args...).AddArguments("clone")
|
||||||
|
if opts.SkipTLSVerify {
|
||||||
|
cmd.AddArguments("-c", "http.sslVerify=false")
|
||||||
|
}
|
||||||
if opts.Mirror {
|
if opts.Mirror {
|
||||||
cmd.AddArguments("--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{
|
if err = git.CloneWithContext(ctx, opts.CloneAddr, repoPath, git.CloneRepoOptions{
|
||||||
Mirror: true,
|
Mirror: true,
|
||||||
Quiet: true,
|
Quiet: true,
|
||||||
Timeout: migrateTimeout,
|
Timeout: migrateTimeout,
|
||||||
|
SkipTLSVerify: setting.Migrations.SkipTLSVerify,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return repo, fmt.Errorf("Clone: %v", err)
|
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{
|
if err = git.CloneWithContext(ctx, wikiRemotePath, wikiPath, git.CloneRepoOptions{
|
||||||
Mirror: true,
|
Mirror: true,
|
||||||
Quiet: true,
|
Quiet: true,
|
||||||
Timeout: migrateTimeout,
|
Timeout: migrateTimeout,
|
||||||
Branch: "master",
|
Branch: "master",
|
||||||
|
SkipTLSVerify: setting.Migrations.SkipTLSVerify,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Warn("Clone wiki: %v", err)
|
log.Warn("Clone wiki: %v", err)
|
||||||
if err := util.RemoveAll(wikiPath); err != nil {
|
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 author *user_model.User
|
||||||
var createdAt = time.Unix(1, 0)
|
createdAt := time.Unix(1, 0)
|
||||||
|
|
||||||
if sig != nil {
|
if sig != nil {
|
||||||
author, err = user_model.GetUserByEmail(sig.Email)
|
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)
|
return fmt.Errorf("unable to get CommitsCount: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var rel = models.Release{
|
rel := models.Release{
|
||||||
RepoID: repo.ID,
|
RepoID: repo.ID,
|
||||||
TagName: tagName,
|
TagName: tagName,
|
||||||
LowerTagName: strings.ToLower(tagName),
|
LowerTagName: strings.ToLower(tagName),
|
||||||
|
|
|
@ -22,14 +22,13 @@ import (
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
base "code.gitea.io/gitea/modules/migration"
|
base "code.gitea.io/gitea/modules/migration"
|
||||||
"code.gitea.io/gitea/modules/repository"
|
"code.gitea.io/gitea/modules/repository"
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/structs"
|
"code.gitea.io/gitea/modules/structs"
|
||||||
|
|
||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var _ base.Uploader = &RepositoryDumper{}
|
||||||
_ base.Uploader = &RepositoryDumper{}
|
|
||||||
)
|
|
||||||
|
|
||||||
// RepositoryDumper implements an Uploader to the local directory
|
// RepositoryDumper implements an Uploader to the local directory
|
||||||
type RepositoryDumper struct {
|
type RepositoryDumper struct {
|
||||||
|
@ -151,9 +150,10 @@ func (g *RepositoryDumper) CreateRepo(repo *base.Repository, opts base.MigrateOp
|
||||||
}
|
}
|
||||||
|
|
||||||
err = git.Clone(remoteAddr, repoPath, git.CloneRepoOptions{
|
err = git.Clone(remoteAddr, repoPath, git.CloneRepoOptions{
|
||||||
Mirror: true,
|
Mirror: true,
|
||||||
Quiet: true,
|
Quiet: true,
|
||||||
Timeout: migrateTimeout,
|
Timeout: migrateTimeout,
|
||||||
|
SkipTLSVerify: setting.Migrations.SkipTLSVerify,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Clone: %v", err)
|
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{
|
if err := git.Clone(wikiRemotePath, wikiPath, git.CloneRepoOptions{
|
||||||
Mirror: true,
|
Mirror: true,
|
||||||
Quiet: true,
|
Quiet: true,
|
||||||
Timeout: migrateTimeout,
|
Timeout: migrateTimeout,
|
||||||
Branch: "master",
|
Branch: "master",
|
||||||
|
SkipTLSVerify: setting.Migrations.SkipTLSVerify,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
log.Warn("Clone wiki: %v", err)
|
log.Warn("Clone wiki: %v", err)
|
||||||
if err := os.RemoveAll(wikiPath); err != nil {
|
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
|
// CreateComments creates comments of issues
|
||||||
func (g *RepositoryDumper) CreateComments(comments ...*base.Comment) error {
|
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 {
|
for _, comment := range comments {
|
||||||
commentsMap[comment.IssueIndex] = append(commentsMap[comment.IssueIndex], comment)
|
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
|
// CreateReviews create pull request reviews
|
||||||
func (g *RepositoryDumper) CreateReviews(reviews ...*base.Review) error {
|
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 {
|
for _, review := range reviews {
|
||||||
reviewsMap[review.IssueIndex] = append(reviewsMap[review.IssueIndex], review)
|
reviewsMap[review.IssueIndex] = append(reviewsMap[review.IssueIndex], review)
|
||||||
}
|
}
|
||||||
|
@ -611,7 +612,7 @@ func RestoreRepository(ctx context.Context, baseDir, ownerName, repoName string,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
var uploader = NewGiteaLocalUploader(ctx, doer, ownerName, repoName)
|
uploader := NewGiteaLocalUploader(ctx, doer, ownerName, repoName)
|
||||||
downloader, err := NewRepositoryRestorer(ctx, baseDir, ownerName, repoName)
|
downloader, err := NewRepositoryRestorer(ctx, baseDir, ownerName, repoName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -622,7 +623,7 @@ func RestoreRepository(ctx context.Context, baseDir, ownerName, repoName string,
|
||||||
}
|
}
|
||||||
tp, _ := strconv.Atoi(opts["service_type"])
|
tp, _ := strconv.Atoi(opts["service_type"])
|
||||||
|
|
||||||
var migrateOpts = base.MigrateOptions{
|
migrateOpts := base.MigrateOptions{
|
||||||
GitServiceType: structs.GitServiceType(tp),
|
GitServiceType: structs.GitServiceType(tp),
|
||||||
}
|
}
|
||||||
updateOptionsUnits(&migrateOpts, units)
|
updateOptionsUnits(&migrateOpts, units)
|
||||||
|
|
Reference in a new issue