Skip to content

Commit b30845d

Browse files
lunnyjeffliu27
authored andcommitted
Fix bug conflict between SyncReleasesWithTags and InsertReleases (go-gitea#7337)
* fix bug conflict between SyncReleasesWithTags and InsertReleases * fix tests * fix fmt
1 parent 51ecfe7 commit b30845d

File tree

5 files changed

+31
-23
lines changed

5 files changed

+31
-23
lines changed

models/release_test.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,13 @@ func TestRelease_MirrorDelete(t *testing.T) {
102102
repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
103103
repoPath := RepoPath(user.Name, repo.Name)
104104
migrationOptions := MigrateRepoOptions{
105-
Name: "test_mirror",
106-
Description: "Test mirror",
107-
IsPrivate: false,
108-
IsMirror: true,
109-
RemoteAddr: repoPath,
110-
Wiki: true,
105+
Name: "test_mirror",
106+
Description: "Test mirror",
107+
IsPrivate: false,
108+
IsMirror: true,
109+
RemoteAddr: repoPath,
110+
Wiki: true,
111+
SyncReleasesWithTags: true,
111112
}
112113
mirror, err := MigrateRepository(user, user, migrationOptions)
113114
assert.NoError(t, err)

models/repo.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -845,12 +845,13 @@ func (repo *Repository) CloneLink() (cl *CloneLink) {
845845

846846
// MigrateRepoOptions contains the repository migrate options
847847
type MigrateRepoOptions struct {
848-
Name string
849-
Description string
850-
IsPrivate bool
851-
IsMirror bool
852-
RemoteAddr string
853-
Wiki bool // include wiki repository
848+
Name string
849+
Description string
850+
IsPrivate bool
851+
IsMirror bool
852+
RemoteAddr string
853+
Wiki bool // include wiki repository
854+
SyncReleasesWithTags bool // sync releases from tags
854855
}
855856

856857
/*
@@ -942,7 +943,7 @@ func MigrateRepository(doer, u *User, opts MigrateRepoOptions) (*Repository, err
942943
return repo, fmt.Errorf("git.IsEmpty: %v", err)
943944
}
944945

945-
if !repo.IsEmpty {
946+
if opts.SyncReleasesWithTags && !repo.IsEmpty {
946947
// Try to get HEAD branch and set it as default branch.
947948
headBranch, err := gitRepo.GetHEADBranch()
948949
if err != nil {

modules/migrations/base/uploader.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ package base
77

88
// Uploader uploads all the informations of one repository
99
type Uploader interface {
10-
CreateRepo(repo *Repository, includeWiki bool) error
10+
CreateRepo(repo *Repository, opts MigrateOptions) error
1111
CreateMilestones(milestones ...*Milestone) error
1212
CreateReleases(releases ...*Release) error
1313
CreateLabels(labels ...*Label) error

modules/migrations/gitea.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,20 @@ func NewGiteaLocalUploader(doer *models.User, repoOwner, repoName string) *Gitea
5454
}
5555

5656
// CreateRepo creates a repository
57-
func (g *GiteaLocalUploader) CreateRepo(repo *base.Repository, includeWiki bool) error {
57+
func (g *GiteaLocalUploader) CreateRepo(repo *base.Repository, opts base.MigrateOptions) error {
5858
owner, err := models.GetUserByName(g.repoOwner)
5959
if err != nil {
6060
return err
6161
}
6262

6363
r, err := models.MigrateRepository(g.doer, owner, models.MigrateRepoOptions{
64-
Name: g.repoName,
65-
Description: repo.Description,
66-
IsMirror: repo.IsMirror,
67-
RemoteAddr: repo.CloneURL,
68-
IsPrivate: repo.IsPrivate,
69-
Wiki: includeWiki,
64+
Name: g.repoName,
65+
Description: repo.Description,
66+
IsMirror: repo.IsMirror,
67+
RemoteAddr: repo.CloneURL,
68+
IsPrivate: repo.IsPrivate,
69+
Wiki: opts.Wiki,
70+
SyncReleasesWithTags: !opts.Releases, // if didn't get releases, then sync them from tags
7071
})
7172
g.repo = r
7273
if err != nil {
@@ -198,7 +199,12 @@ func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error {
198199

199200
rels = append(rels, &rel)
200201
}
201-
return models.InsertReleases(rels...)
202+
if err := models.InsertReleases(rels...); err != nil {
203+
return err
204+
}
205+
206+
// sync tags to releases in database
207+
return models.SyncReleasesWithTags(g.repo, g.gitRepo)
202208
}
203209

204210
// CreateIssues creates issues

modules/migrations/migrate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts
8080
repo.Description = opts.Description
8181
}
8282
log.Trace("migrating git data")
83-
if err := uploader.CreateRepo(repo, opts.Wiki); err != nil {
83+
if err := uploader.CreateRepo(repo, opts); err != nil {
8484
return err
8585
}
8686

0 commit comments

Comments
 (0)