mixlib-config has a new minor release with save() and restore(). save will take any values the user has explicitly set and place them in a hash. This does not include defaults. A usage example with Chef::Config, which uses Mixlib::Config:
[sourcecode language="ruby"][/sourcecode] Chef::Config.log_level = 'debug' my_hash = Chef::Config.save # Returns { :log_level => 'debug' } Chef::Config.log_level = 'error' Chef::Config.restore(my_hash) # Chef::Config.log_level is now 'debug' again
mixlib-config 2.1 introduces no backwards-incompatible changes and should be safe to upgrade to. Please file issues at https://tickets.opscode.com.