changeset 33150:77e666f943a6

configitems: support callable as a default value Yuya pointed out that using mutable value as the default could be problematic. To work around this we now support callable object as default value. This allows for creating new mutable objects on demand when needed.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 28 Jun 2017 13:50:20 +0200
parents a14e2e7f7d1f
children 851825214aa3
files mercurial/configitems.py mercurial/ui.py
diffstat 2 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/configitems.py	Tue Jun 27 02:06:15 2017 +0200
+++ b/mercurial/configitems.py	Wed Jun 28 13:50:20 2017 +0200
@@ -60,7 +60,7 @@
     default=2,
 )
 coreconfigitem('ui', 'clonebundleprefers',
-    default=[],
+    default=list,
 )
 coreconfigitem('ui', 'interactive',
     default=None,
--- a/mercurial/ui.py	Tue Jun 27 02:06:15 2017 +0200
+++ b/mercurial/ui.py	Wed Jun 28 13:50:20 2017 +0200
@@ -455,6 +455,8 @@
             if default is _unset:
                 if item is None:
                     value = default
+                elif callable(item.default):
+                    value = item.default()
                 else:
                     value = item.default
             elif item is not None: