1. hash_c = hash_a.merge(hash_b) will return a new hash which contains key-values of both hash_a and hash_b, and if the two hashes have some same keys, the key-values of hash_b will be kept in hash_c. So that if a repo file has the same key with DEFAULTS file, its own will be kept.
2. fix that if there's no DEFAULTS file, the merge_defaults method will return nil.
Signed-off-by: Li Yuanchao lyc163mail@163.com --- lib/git_mirror.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/lib/git_mirror.rb b/lib/git_mirror.rb index fa2e0cc..8898a44 100644 --- a/lib/git_mirror.rb +++ b/lib/git_mirror.rb @@ -453,10 +453,12 @@ class MirrorMain def merge_defaults(git_repo) defaults_key = File.dirname(git_repo) while defaults_key != '.' - return @git_info[git_repo].merge!(@defaults[defaults_key]) if @defaults[defaults_key] + return @defaults[defaults_key].merge(@git_info[git_repo]) if @defaults[defaults_key]
defaults_key = File.dirname(defaults_key) end - return @git_info[git_repo].merge!(@defaults['default']) if @defaults['default'] + return @defaults['default'].merge(@git_info[git_repo]) if @defaults['default'] + + return @git_info[git_repo] end end