diff -r 98d7636c4729 -r 4b0e6677eed1 mercurial/ui.py --- a/mercurial/ui.py Sat Nov 26 09:07:11 2016 -0800 +++ b/mercurial/ui.py Sat Nov 26 09:14:41 2016 -0800 @@ -1201,16 +1201,18 @@ `overrides` must be a dict of the following structure: {(section, name) : value}""" backups = {} - for (section, name), value in overrides.items(): - backups[(section, name)] = self.backupconfig(section, name) - self.setconfig(section, name, value, source) - yield - for __, backup in backups.items(): - self.restoreconfig(backup) - # just restoring ui.quiet config to the previous value is not enough - # as it does not update ui.quiet class member - if ('ui', 'quiet') in overrides: - self.fixconfig(section='ui') + try: + for (section, name), value in overrides.items(): + backups[(section, name)] = self.backupconfig(section, name) + self.setconfig(section, name, value, source) + yield + finally: + for __, backup in backups.items(): + self.restoreconfig(backup) + # just restoring ui.quiet config to the previous value is not enough + # as it does not update ui.quiet class member + if ('ui', 'quiet') in overrides: + self.fixconfig(section='ui') class paths(dict): """Represents a collection of paths and their configs.