|
|
@ -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) |
|
|
|