0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-11-02 00:27:24 +01:00

Merge e12a5b8bd8da12705adfb281563a5bc57a0374bb into fe2599715730c385da38650903f3bc8400a4c919

This commit is contained in:
Lunny Xiao 2025-10-29 11:30:14 +01:00 committed by GitHub
commit edcb08c655
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -16,6 +16,7 @@ import (
repo_model "code.gitea.io/gitea/models/repo"
system_model "code.gitea.io/gitea/models/system"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/container"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/hostmatcher"
"code.gitea.io/gitea/modules/log"
@ -327,6 +328,9 @@ func migrateRepository(ctx context.Context, doer *user_model.User, downloader ba
messenger("repo.migrate.migrating_issues")
issueBatchSize := uploader.MaxBatchInsertSize("issue")
// because when the migrating is running, some issues maybe removed, so after the next page
// some of issue maybe duplicated, so we need to record the inserted issue indexes
mapInsertedIssueIndexes := container.Set[int64]{}
for i := 1; ; i++ {
issues, isEnd, err := downloader.GetIssues(ctx, i, issueBatchSize)
if err != nil {
@ -336,6 +340,14 @@ func migrateRepository(ctx context.Context, doer *user_model.User, downloader ba
log.Warn("migrating issues is not supported, ignored")
break
}
for i := 0; i < len(issues); i++ {
if mapInsertedIssueIndexes.Contains(issues[i].Number) {
issues = append(issues[:i], issues[i+1:]...)
i--
continue
}
mapInsertedIssueIndexes.Add(issues[i].Number)
}
if err := uploader.CreateIssues(ctx, issues...); err != nil {
return err
@ -381,6 +393,7 @@ func migrateRepository(ctx context.Context, doer *user_model.User, downloader ba
log.Trace("migrating pull requests and comments")
messenger("repo.migrate.migrating_pulls")
prBatchSize := uploader.MaxBatchInsertSize("pullrequest")
mapInsertedPRIndexes := container.Set[int64]{}
for i := 1; ; i++ {
prs, isEnd, err := downloader.GetPullRequests(ctx, i, prBatchSize)
if err != nil {
@ -390,6 +403,14 @@ func migrateRepository(ctx context.Context, doer *user_model.User, downloader ba
log.Warn("migrating pull requests is not supported, ignored")
break
}
for i := 0; i < len(prs); i++ {
if mapInsertedPRIndexes.Contains(prs[i].Number) {
prs = append(prs[:i], prs[i+1:]...)
i--
continue
}
mapInsertedPRIndexes.Add(prs[i].Number)
}
if err := uploader.CreatePullRequests(ctx, prs...); err != nil {
return err