Fix bug conflict between SyncReleasesWithTags and InsertReleases (#7337)

* fix bug conflict between SyncReleasesWithTags and InsertReleases

* fix tests

* fix fmt
This commit is contained in:
Lunny Xiao 2019-07-02 05:17:16 +08:00 committed by zeripath
parent 9fdd199cca
commit e728b55812
5 changed files with 31 additions and 23 deletions

View file

@ -108,6 +108,7 @@ func TestRelease_MirrorDelete(t *testing.T) {
IsMirror: true, IsMirror: true,
RemoteAddr: repoPath, RemoteAddr: repoPath,
Wiki: true, Wiki: true,
SyncReleasesWithTags: true,
} }
mirror, err := MigrateRepository(user, user, migrationOptions) mirror, err := MigrateRepository(user, user, migrationOptions)
assert.NoError(t, err) assert.NoError(t, err)

View file

@ -851,6 +851,7 @@ type MigrateRepoOptions struct {
IsMirror bool IsMirror bool
RemoteAddr string RemoteAddr string
Wiki bool // include wiki repository Wiki bool // include wiki repository
SyncReleasesWithTags bool // sync releases from tags
} }
/* /*
@ -942,7 +943,7 @@ func MigrateRepository(doer, u *User, opts MigrateRepoOptions) (*Repository, err
return repo, fmt.Errorf("git.IsEmpty: %v", err) return repo, fmt.Errorf("git.IsEmpty: %v", err)
} }
if !repo.IsEmpty { if opts.SyncReleasesWithTags && !repo.IsEmpty {
// Try to get HEAD branch and set it as default branch. // Try to get HEAD branch and set it as default branch.
headBranch, err := gitRepo.GetHEADBranch() headBranch, err := gitRepo.GetHEADBranch()
if err != nil { if err != nil {

View file

@ -7,7 +7,7 @@ package base
// Uploader uploads all the informations of one repository // Uploader uploads all the informations of one repository
type Uploader interface { type Uploader interface {
CreateRepo(repo *Repository, includeWiki bool) error CreateRepo(repo *Repository, opts MigrateOptions) error
CreateMilestones(milestones ...*Milestone) error CreateMilestones(milestones ...*Milestone) error
CreateReleases(releases ...*Release) error CreateReleases(releases ...*Release) error
CreateLabels(labels ...*Label) error CreateLabels(labels ...*Label) error

View file

@ -54,7 +54,7 @@ func NewGiteaLocalUploader(doer *models.User, repoOwner, repoName string) *Gitea
} }
// CreateRepo creates a repository // CreateRepo creates a repository
func (g *GiteaLocalUploader) CreateRepo(repo *base.Repository, includeWiki bool) error { func (g *GiteaLocalUploader) CreateRepo(repo *base.Repository, opts base.MigrateOptions) error {
owner, err := models.GetUserByName(g.repoOwner) owner, err := models.GetUserByName(g.repoOwner)
if err != nil { if err != nil {
return err return err
@ -66,7 +66,8 @@ func (g *GiteaLocalUploader) CreateRepo(repo *base.Repository, includeWiki bool)
IsMirror: repo.IsMirror, IsMirror: repo.IsMirror,
RemoteAddr: repo.CloneURL, RemoteAddr: repo.CloneURL,
IsPrivate: repo.IsPrivate, IsPrivate: repo.IsPrivate,
Wiki: includeWiki, Wiki: opts.Wiki,
SyncReleasesWithTags: !opts.Releases, // if didn't get releases, then sync them from tags
}) })
g.repo = r g.repo = r
if err != nil { if err != nil {
@ -198,7 +199,12 @@ func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error {
rels = append(rels, &rel) rels = append(rels, &rel)
} }
return models.InsertReleases(rels...) if err := models.InsertReleases(rels...); err != nil {
return err
}
// sync tags to releases in database
return models.SyncReleasesWithTags(g.repo, g.gitRepo)
} }
// CreateIssues creates issues // CreateIssues creates issues

View file

@ -80,7 +80,7 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts
repo.Description = opts.Description repo.Description = opts.Description
} }
log.Trace("migrating git data") log.Trace("migrating git data")
if err := uploader.CreateRepo(repo, opts.Wiki); err != nil { if err := uploader.CreateRepo(repo, opts); err != nil {
return err return err
} }