1
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-02-06 10:24:02 +00:00

Merge 97b5cdc3f6373295e08a9d53d35c068a912374eb into 943cc4f98952431c4e95a62301d56bcc7b708338

This commit is contained in:
Lunny Xiao 2025-02-06 14:33:53 +08:00 committed by GitHub
commit 18a4af051f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -15,6 +15,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"
@ -328,6 +329,9 @@ func migrateRepository(_ context.Context, doer *user_model.User, downloader base
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(i, issueBatchSize)
if err != nil {
@ -337,6 +341,14 @@ func migrateRepository(_ context.Context, doer *user_model.User, downloader base
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(issues...); err != nil {
return err
@ -382,6 +394,7 @@ func migrateRepository(_ context.Context, doer *user_model.User, downloader base
log.Trace("migrating pull requests and comments")
messenger("repo.migrate.migrating_pulls")
prBatchSize := uploader.MaxBatchInsertSize("pullrequest")
mapInsertedIssueIndexes := container.Set[int64]{}
for i := 1; ; i++ {
prs, isEnd, err := downloader.GetPullRequests(i, prBatchSize)
if err != nil {
@ -391,6 +404,14 @@ func migrateRepository(_ context.Context, doer *user_model.User, downloader base
log.Warn("migrating pull requests is not supported, ignored")
break
}
for i := 0; i < len(prs); i++ {
if mapInsertedIssueIndexes.Contains(prs[i].Number) {
prs = append(prs[:i], prs[i+1:]...)
i--
continue
}
mapInsertedIssueIndexes.Add(prs[i].Number)
}
if err := uploader.CreatePullRequests(prs...); err != nil {
return err