Skip to content

Commit 6e13930

Browse files
committed
cli/compose/loader: mergeServices: remove intermediate map for overrides
The code was using an intermediate map, indexed by name, for services per file. Service-names should be unique per-file, so using an intermediate map would not benefit us (we'd still have to loop over all of them to produce the map, and again to iterate over the map) Remove the intermediate map for overrides, and apply all overrides for a service instead. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
1 parent 78458e1 commit 6e13930

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

cli/compose/loader/merge.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,15 @@ func mergeServices(base, override []types.ServiceConfig) ([]types.ServiceConfig,
7171
}
7272

7373
baseServices := mapByName(base)
74-
for name, overrideService := range mapByName(override) {
75-
if baseService, ok := baseServices[name]; ok {
74+
for _, overrideService := range override {
75+
if baseService, ok := baseServices[overrideService.Name]; ok {
7676
if err := mergo.Merge(&baseService, &overrideService, mergeOpts...); err != nil {
77-
return base, fmt.Errorf("cannot merge service %s: %w", name, err)
77+
return base, fmt.Errorf("cannot merge service %s: %w", overrideService.Name, err)
7878
}
79-
baseServices[name] = baseService
79+
baseServices[overrideService.Name] = baseService
8080
continue
8181
}
82-
baseServices[name] = overrideService
82+
baseServices[overrideService.Name] = overrideService
8383
}
8484

8585
services := make([]types.ServiceConfig, 0, len(baseServices))

0 commit comments

Comments
 (0)