mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Add SyncTags to uploader interface (#9326)
* Add sync tags to interface Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix revive Signed-off-by: jolheiser <john.olheiser@gmail.com>
This commit is contained in:
		
				
					committed by
					
						
						Lunny Xiao
					
				
			
			
				
	
			
			
			
						parent
						
							3bf5a07537
						
					
				
				
					commit
					382936a668
				
			@@ -11,7 +11,8 @@ type Uploader interface {
 | 
			
		||||
	CreateRepo(repo *Repository, opts MigrateOptions) error
 | 
			
		||||
	CreateTopics(topic ...string) error
 | 
			
		||||
	CreateMilestones(milestones ...*Milestone) error
 | 
			
		||||
	CreateReleases(syncTags bool, releases ...*Release) error
 | 
			
		||||
	CreateReleases(releases ...*Release) error
 | 
			
		||||
	SyncTags() error
 | 
			
		||||
	CreateLabels(labels ...*Label) error
 | 
			
		||||
	CreateIssues(issues ...*Issue) error
 | 
			
		||||
	CreateComments(comments ...*Comment) error
 | 
			
		||||
 
 | 
			
		||||
@@ -201,7 +201,7 @@ func (g *GiteaLocalUploader) CreateLabels(labels ...*base.Label) error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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))
 | 
			
		||||
	for _, release := range releases {
 | 
			
		||||
		var rel = models.Release{
 | 
			
		||||
@@ -288,16 +288,13 @@ func (g *GiteaLocalUploader) CreateReleases(syncTags bool, releases ...*base.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
 | 
			
		||||
 
 | 
			
		||||
@@ -161,20 +161,21 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		relBatchSize := uploader.MaxBatchInsertSize("release")
 | 
			
		||||
		syncTags := false
 | 
			
		||||
		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
 | 
			
		||||
			}
 | 
			
		||||
			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")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user