@@ -495,25 +495,23 @@ func mergePackageRepositories(defaultRepos, userRepos []PackageRepository) []Pac
495495 return userRepos
496496 }
497497
498- // Start with a copy of default repos
499- merged := make ([]PackageRepository , len (defaultRepos ))
500- copy (merged , defaultRepos )
501-
502- // For each user repo, override if codename matches a default, otherwise append
498+ // Remove all default repos whose codename is explicitly provided by user repos,
499+ // then append user repos as-is. This avoids partially overriding repeated
500+ // default entries for the same codename (e.g. split components).
501+ userCodenames := make (map [string ]struct {}, len (userRepos ))
503502 for _ , userRepo := range userRepos {
504- found := false
505- for i , defRepo := range merged {
506- if defRepo .Codename == userRepo .Codename {
507- merged [i ] = userRepo
508- found = true
509- break
510- }
511- }
512- if ! found {
513- merged = append (merged , userRepo )
503+ userCodenames [userRepo .Codename ] = struct {}{}
504+ }
505+
506+ merged := make ([]PackageRepository , 0 , len (defaultRepos )+ len (userRepos ))
507+ for _ , defRepo := range defaultRepos {
508+ if _ , ok := userCodenames [defRepo .Codename ]; ok {
509+ continue
514510 }
511+ merged = append (merged , defRepo )
515512 }
516513
514+ merged = append (merged , userRepos ... )
517515 return merged
518516}
519517
0 commit comments