MM-14442: Merge function, to enable merging of configs (#10423)

* MM-14442: Merge function, to enable merging of configs

Merge will return a new struct of the same type as base and
patch, with patch merged into base. Specifically, patch's values will be preferred
except when patch's value is `nil`.

Restrictions/guarantees:
- base or patch will not be modified
- base and patch can be pointers or values
- base and patch must be the same type
- base and patch must have no unexported types (at the moment)
- if maps or slices are different, the entire map or slice will be
  replaced (at the moment)

* License header

* major rewrite addressing PR comments from Jesse

* MM-14442: merge function for config files

- simplified merge for slices and maps
- fixed many problems with nested pointers/maps/slices
- all references are cloned
- 54 new tests, simplified tests for specific problems

* MM-14442: fixing formatting, comments
Этот коммит содержится в:
Christopher Poile
2019-03-19 09:45:20 -04:00
коммит произвёл Jesse Hallam
родитель 372ef87f76
Коммит 498b988a6b
5 изменённых файлов: 1892 добавлений и 0 удалений

1649
utils/merge_test.go Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу