Skip to content

Commit 46d6b92

Browse files
sapklunny
authored andcommitted
Import topics during migration (#7851)
* add GetTopics interface * CreateTopics * remove un-needed comment
1 parent 99a004c commit 46d6b92

File tree

8 files changed

+34
-0
lines changed

8 files changed

+34
-0
lines changed

docs/content/doc/advanced/migrations.en-us.md

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ create a Downloader.
3434
```Go
3535
type Downloader interface {
3636
GetRepoInfo() (*Repository, error)
37+
GetTopics() ([]string, error)
3738
GetMilestones() ([]*Milestone, error)
3839
GetReleases() ([]*Release, error)
3940
GetLabels() ([]*Label, error)

modules/migrations/base/downloader.go

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package base
88
// Downloader downloads the site repo informations
99
type Downloader interface {
1010
GetRepoInfo() (*Repository, error)
11+
GetTopics() ([]string, error)
1112
GetMilestones() ([]*Milestone, error)
1213
GetReleases() ([]*Release, error)
1314
GetLabels() ([]*Label, error)

modules/migrations/base/uploader.go

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package base
99
type Uploader interface {
1010
MaxBatchInsertSize(tp string) int
1111
CreateRepo(repo *Repository, opts MigrateOptions) error
12+
CreateTopics(topic ...string) error
1213
CreateMilestones(milestones ...*Milestone) error
1314
CreateReleases(releases ...*Release) error
1415
CreateLabels(labels ...*Label) error

modules/migrations/git.go

+5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ func (g *PlainGitDownloader) GetRepoInfo() (*base.Repository, error) {
3838
}, nil
3939
}
4040

41+
// GetTopics returns empty list for plain git repo
42+
func (g *PlainGitDownloader) GetTopics() ([]string, error) {
43+
return []string{}, nil
44+
}
45+
4146
// GetMilestones returns milestones
4247
func (g *PlainGitDownloader) GetMilestones() ([]*base.Milestone, error) {
4348
return nil, ErrNotSupported

modules/migrations/gitea.go

+5
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ func (g *GiteaLocalUploader) CreateRepo(repo *base.Repository, opts base.Migrate
9797
return err
9898
}
9999

100+
// CreateTopics creates topics
101+
func (g *GiteaLocalUploader) CreateTopics(topics ...string) error {
102+
return models.SaveTopics(g.repo.ID, topics...)
103+
}
104+
100105
// CreateMilestones creates milestones
101106
func (g *GiteaLocalUploader) CreateMilestones(milestones ...*base.Milestone) error {
102107
var mss = make([]*models.Milestone, 0, len(milestones))

modules/migrations/github.go

+6
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ func (g *GithubDownloaderV3) GetRepoInfo() (*base.Repository, error) {
118118
}, nil
119119
}
120120

121+
// GetTopics return github topics
122+
func (g *GithubDownloaderV3) GetTopics() ([]string, error) {
123+
r, _, err := g.client.Repositories.Get(g.ctx, g.repoOwner, g.repoName)
124+
return r.Topics, err
125+
}
126+
121127
// GetMilestones returns milestones
122128
func (g *GithubDownloaderV3) GetMilestones() ([]*base.Milestone, error) {
123129
var perPage = 100

modules/migrations/github_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ func TestGitHubDownloadRepo(t *testing.T) {
7171
OriginalURL: "https://github.com/go-gitea/gitea",
7272
}, repo)
7373

74+
topics, err := downloader.GetTopics()
75+
assert.NoError(t, err)
76+
assert.Contains(t, topics, "gitea")
77+
7478
milestones, err := downloader.GetMilestones()
7579
assert.NoError(t, err)
7680
// before this tool release, we have 39 milestones on github.com/go-gitea/gitea

modules/migrations/migrate.go

+11
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,17 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts
8282
return err
8383
}
8484

85+
log.Trace("migrating topics")
86+
topics, err := downloader.GetTopics()
87+
if err != nil {
88+
return err
89+
}
90+
if len(topics) > 0 {
91+
if err := uploader.CreateTopics(topics...); err != nil {
92+
return err
93+
}
94+
}
95+
8596
if opts.Milestones {
8697
log.Trace("migrating milestones")
8798
milestones, err := downloader.GetMilestones()

0 commit comments

Comments
 (0)