@@ -425,7 +425,7 @@ func DeleteReleaseByID(id int64, u *User, delTag bool) error {
425425
426426// SyncReleasesWithTags synchronizes release table with repository tags
427427func SyncReleasesWithTags (repo * Repository , gitRepo * git.Repository ) error {
428- checked := make ([] string , 100 )
428+ existingRelTags := make (map [ string ] struct {} )
429429 opts := FindReleasesOptions {IncludeDrafts : true , IncludeTags : true }
430430 page := 0
431431 for {
@@ -446,7 +446,7 @@ func SyncReleasesWithTags(repo *Repository, gitRepo *git.Repository) error {
446446 return fmt .Errorf ("pushUpdateDeleteTag: %v" , err )
447447 }
448448 } else {
449- checked = append ( checked , rel .TagName )
449+ existingRelTags [ strings . ToLower ( rel .TagName )] = struct {}{}
450450 }
451451 }
452452 }
@@ -455,16 +455,11 @@ func SyncReleasesWithTags(repo *Repository, gitRepo *git.Repository) error {
455455 return fmt .Errorf ("GetTags: %v" , err )
456456 }
457457 for _ , tagName := range tags {
458- exists := false
459- for _ , relTagName := range checked {
460- if tagName == relTagName {
461- exists = true
462- break
458+ if _ , ok := existingRelTags [strings .ToLower (tagName )]; ! ok {
459+ if err := pushUpdateAddTag (repo , gitRepo , tagName ); err != nil {
460+ return fmt .Errorf ("pushUpdateAddTag: %v" , err )
463461 }
464462 }
465- if ! exists {
466- pushUpdateAddTag (repo , gitRepo , tagName )
467- }
468463 }
469464 return nil
470465}
0 commit comments