summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsersut <serdar@opscode.com>2013-10-23 14:34:41 -0700
committersersut <serdar@opscode.com>2013-10-23 14:34:41 -0700
commit1373a978ea5ec321e4fb4808f8d53a4fcecf93c1 (patch)
tree96249190a8adfefe2605af808cd60c9c6e4c4056
parente332c6d44e604864e80fdd5ac9f6ee31cb48d1da (diff)
downloadchef-deep-merge-override-array.tar.gz
When merging two arrays during deep merge instead of deduplicating and merging elements, pick the one that is higher in the inheritance order.deep-merge-override-array
-rw-r--r--chef/lib/chef/mixin/deep_merge.rb5
1 files changed, 4 insertions, 1 deletions
diff --git a/chef/lib/chef/mixin/deep_merge.rb b/chef/lib/chef/mixin/deep_merge.rb
index dd6e946ba1..9eeaf125b1 100644
--- a/chef/lib/chef/mixin/deep_merge.rb
+++ b/chef/lib/chef/mixin/deep_merge.rb
@@ -181,7 +181,10 @@ class Chef
puts if merge_debug
end
puts "#{di} merging arrays: #{source.inspect} :: #{dest.inspect}" if merge_debug
- dest = dest | source
+ # When merging to arrays instead of merging and
+ # deduplicating the elements pick the array that is higher
+ # in the inheritance order.
+ dest = source
dest.sort! if sort_merged_arrays
elsif overwrite_unmergeable
puts "#{di} overwriting dest: #{source.inspect} -over-> #{dest.inspect}" if merge_debug