mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-21 04:45:02 +02:00
Fix possible bug when migrating issues/pull requests
This commit is contained in:
parent
05e9063013
commit
97b5cdc3f6
@ -15,6 +15,7 @@ import (
|
|||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
system_model "code.gitea.io/gitea/models/system"
|
system_model "code.gitea.io/gitea/models/system"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
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/git"
|
||||||
"code.gitea.io/gitea/modules/hostmatcher"
|
"code.gitea.io/gitea/modules/hostmatcher"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"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")
|
messenger("repo.migrate.migrating_issues")
|
||||||
issueBatchSize := uploader.MaxBatchInsertSize("issue")
|
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++ {
|
for i := 1; ; i++ {
|
||||||
issues, isEnd, err := downloader.GetIssues(i, issueBatchSize)
|
issues, isEnd, err := downloader.GetIssues(i, issueBatchSize)
|
||||||
if err != nil {
|
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")
|
log.Warn("migrating issues is not supported, ignored")
|
||||||
break
|
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 {
|
if err := uploader.CreateIssues(issues...); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -382,6 +394,7 @@ func migrateRepository(_ context.Context, doer *user_model.User, downloader base
|
|||||||
log.Trace("migrating pull requests and comments")
|
log.Trace("migrating pull requests and comments")
|
||||||
messenger("repo.migrate.migrating_pulls")
|
messenger("repo.migrate.migrating_pulls")
|
||||||
prBatchSize := uploader.MaxBatchInsertSize("pullrequest")
|
prBatchSize := uploader.MaxBatchInsertSize("pullrequest")
|
||||||
|
mapInsertedIssueIndexes := container.Set[int64]{}
|
||||||
for i := 1; ; i++ {
|
for i := 1; ; i++ {
|
||||||
prs, isEnd, err := downloader.GetPullRequests(i, prBatchSize)
|
prs, isEnd, err := downloader.GetPullRequests(i, prBatchSize)
|
||||||
if err != nil {
|
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")
|
log.Warn("migrating pull requests is not supported, ignored")
|
||||||
break
|
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 {
|
if err := uploader.CreatePullRequests(prs...); err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user