* Add sync tags to interface Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix revive Signed-off-by: jolheiser <john.olheiser@gmail.com>tags/v1.21.12.1
| @@ -11,7 +11,8 @@ type Uploader interface { | |||||
| CreateRepo(repo *Repository, opts MigrateOptions) error | CreateRepo(repo *Repository, opts MigrateOptions) error | ||||
| CreateTopics(topic ...string) error | CreateTopics(topic ...string) error | ||||
| CreateMilestones(milestones ...*Milestone) error | CreateMilestones(milestones ...*Milestone) error | ||||
| CreateReleases(syncTags bool, releases ...*Release) error | |||||
| CreateReleases(releases ...*Release) error | |||||
| SyncTags() error | |||||
| CreateLabels(labels ...*Label) error | CreateLabels(labels ...*Label) error | ||||
| CreateIssues(issues ...*Issue) error | CreateIssues(issues ...*Issue) error | ||||
| CreateComments(comments ...*Comment) error | CreateComments(comments ...*Comment) error | ||||
| @@ -201,7 +201,7 @@ func (g *GiteaLocalUploader) CreateLabels(labels ...*base.Label) error { | |||||
| } | } | ||||
| // CreateReleases creates releases | // CreateReleases creates releases | ||||
| func (g *GiteaLocalUploader) CreateReleases(syncTags bool, releases ...*base.Release) error { | |||||
| func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error { | |||||
| var rels = make([]*models.Release, 0, len(releases)) | var rels = make([]*models.Release, 0, len(releases)) | ||||
| for _, release := range releases { | for _, release := range releases { | ||||
| var rel = models.Release{ | var rel = models.Release{ | ||||
| @@ -288,16 +288,13 @@ func (g *GiteaLocalUploader) CreateReleases(syncTags bool, releases ...*base.Rel | |||||
| rels = append(rels, &rel) | rels = append(rels, &rel) | ||||
| } | } | ||||
| if err := models.InsertReleases(rels...); err != nil { | |||||
| return err | |||||
| } | |||||
| if syncTags { | |||||
| // sync tags to releases in database | |||||
| return models.SyncReleasesWithTags(g.repo, g.gitRepo) | |||||
| } | |||||
| return models.InsertReleases(rels...) | |||||
| } | |||||
| return nil | |||||
| // SyncTags syncs releases with tags in the database | |||||
| func (g *GiteaLocalUploader) SyncTags() error { | |||||
| return models.SyncReleasesWithTags(g.repo, g.gitRepo) | |||||
| } | } | ||||
| // CreateIssues creates issues | // CreateIssues creates issues | ||||
| @@ -161,20 +161,21 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts | |||||
| } | } | ||||
| relBatchSize := uploader.MaxBatchInsertSize("release") | relBatchSize := uploader.MaxBatchInsertSize("release") | ||||
| syncTags := false | |||||
| for len(releases) > 0 { | for len(releases) > 0 { | ||||
| if len(releases) <= relBatchSize { | |||||
| if len(releases) < relBatchSize { | |||||
| relBatchSize = len(releases) | |||||
| } | |||||
| syncTags = true | |||||
| if len(releases) < relBatchSize { | |||||
| relBatchSize = len(releases) | |||||
| } | } | ||||
| if err := uploader.CreateReleases(syncTags, releases[:relBatchSize]...); err != nil { | |||||
| if err := uploader.CreateReleases(releases[:relBatchSize]...); err != nil { | |||||
| return err | return err | ||||
| } | } | ||||
| releases = releases[relBatchSize:] | releases = releases[relBatchSize:] | ||||
| } | } | ||||
| // Once all releases (if any) are inserted, sync any remaining non-release tags | |||||
| if err := uploader.SyncTags(); err != nil { | |||||
| return err | |||||
| } | |||||
| } | } | ||||
| var commentBatchSize = uploader.MaxBatchInsertSize("comment") | var commentBatchSize = uploader.MaxBatchInsertSize("comment") | ||||