# HG changeset patch # User Boris Feld # Date 1508417166 -7200 # Node ID 461c9d940519e3e1771579f9e6ef2a4496cf1248 # Parent 039313d772d2c825c52c7567871d0dd03b4299f6 evolve: registed configitems if available The config are registered as 'dynamicdefault' because we still need to explicitly pass the config option for older version of Mercurial. (4.2 and before). diff -r 039313d772d2 -r 461c9d940519 hgext3rd/evolve/__init__.py --- a/hgext3rd/evolve/__init__.py Thu Oct 19 21:23:21 2017 +0200 +++ b/hgext3rd/evolve/__init__.py Thu Oct 19 14:46:06 2017 +0200 @@ -374,6 +374,15 @@ extsetup = eh.final_extsetup reposetup = eh.final_reposetup cmdtable = eh.cmdtable +configtable = eh.configtable + +# Configuration +eh.configitem('experimental', 'evolutioncommands') +eh.configitem('experimental', 'evolution.allnewcommands') +eh.configitem('experimental', 'prunestrip') + +# hack around because we need an actual default there +configtable['experimental']['evolution.allnewcommands'].default = None # pre hg 4.0 compat @@ -418,7 +427,7 @@ # This must be in the same function as the option configuration above to # guarantee it happens after the above configuration, but before the # extsetup functions. - evolvecommands = ui.configlist('experimental', 'evolutioncommands') + evolvecommands = ui.configlist('experimental', 'evolutioncommands', []) evolveopts = ui.configlist('experimental', 'evolution') if evolveopts and (commandopt not in evolveopts and 'all' not in evolveopts): @@ -2247,7 +2256,7 @@ "backup bundle")), ]) def stripwrapper(orig, ui, repo, *revs, **kwargs): - if (not ui.configbool('experimental', 'prunestrip') or + if (not ui.configbool('experimental', 'prunestrip', False) or kwargs.get('bundle', False)): return orig(ui, repo, *revs, **kwargs) diff -r 039313d772d2 -r 461c9d940519 hgext3rd/evolve/exthelper.py --- a/hgext3rd/evolve/exthelper.py Thu Oct 19 21:23:21 2017 +0200 +++ b/hgext3rd/evolve/exthelper.py Thu Oct 19 14:46:06 2017 +0200 @@ -17,6 +17,13 @@ from mercurial import cmdutil command = cmdutil.command +configitem = None +dynamicdefault = None +if util.safehasattr(registrar, 'configitem'): + configitem = registrar.configitem + from mercurial import configitems + dynamicdefault = configitems.dynamicdefault + class exthelper(object): """Helper for modular extension setup @@ -39,6 +46,22 @@ self.cmdtable = {} self.command = command(self.cmdtable) + self.configtable = {} + self._configitem = None + if configitem is not None: + self._configitem = configitem(self.configtable) + + def configitem(self, section, config): + """For Mercurial 4.4 and above, register a config item + + For now constraint to 'dynamicdefault' until we only support version with the feature. + Older version would otherwise not use the declare default. + + For older version no-op fallback for old Mercurial versions + """ + if self._configitem is not None: + self._configitem(section, config, default=dynamicdefault) + def merge(self, other): self._uicallables.extend(other._uicallables) self._extcallables.extend(other._extcallables) @@ -50,6 +73,11 @@ self._functionwrappers.extend(other._functionwrappers) self._duckpunchers.extend(other._duckpunchers) self.cmdtable.update(other.cmdtable) + for section, items in other.configtable.iteritems(): + if section in self.configtable: + self.configtable[section].update(items) + else: + self.configtable[section] = items def final_uisetup(self, ui): """Method to be used as the extension uisetup diff -r 039313d772d2 -r 461c9d940519 hgext3rd/evolve/obsdiscovery.py --- a/hgext3rd/evolve/obsdiscovery.py Thu Oct 19 21:23:21 2017 +0200 +++ b/hgext3rd/evolve/obsdiscovery.py Thu Oct 19 14:46:06 2017 +0200 @@ -72,6 +72,13 @@ eh.merge(stablerange.eh) obsexcmsg = utility.obsexcmsg +# Config +eh.configitem('experimental', 'evolution.obsdiscovery') +eh.configitem('experimental', 'obshashrange') +eh.configitem('experimental', 'obshashrange.warm-cache') +eh.configitem('experimental', 'obshashrange.max-revs') +eh.configitem('experimental', 'obshashrange.lru-size') + ################################## ### Code performing discovery ### ################################## diff -r 039313d772d2 -r 461c9d940519 hgext3rd/evolve/obsexchange.py --- a/hgext3rd/evolve/obsexchange.py Thu Oct 19 21:23:21 2017 +0200 +++ b/hgext3rd/evolve/obsexchange.py Thu Oct 19 14:46:06 2017 +0200 @@ -44,6 +44,7 @@ obsexcmsg = utility.obsexcmsg obsexcprg = utility.obsexcprg +eh.configitem('experimental', 'verbose-obsolescence-exchange') _bestformat = max(obsolete.formats.keys()) diff -r 039313d772d2 -r 461c9d940519 hgext3rd/evolve/obshistory.py --- a/hgext3rd/evolve/obshistory.py Thu Oct 19 21:23:21 2017 +0200 +++ b/hgext3rd/evolve/obshistory.py Thu Oct 19 14:46:06 2017 +0200 @@ -30,6 +30,18 @@ eh = exthelper.exthelper() +# Config +efd = {'default': True} # pass a default value unless the config is registered + +@eh.extsetup +def enableeffectflags(ui): + item = (getattr(ui, '_knownconfig', {}) + .get('experimental', {}) + .get('evolution.effect-flags')) + if item is not None: + item.default = True + efd.clear() + @eh.command( 'obslog|olog', [('G', 'graph', True, _("show the revision DAG")), @@ -634,7 +646,7 @@ meaningful data. In the future, we can introduce way for commands to provide precomputed effect to avoid the overhead. """ - if not repo.ui.configbool('experimental', 'evolution.effect-flags', True): + if not repo.ui.configbool('experimental', 'evolution.effect-flags', **efd): return orig(repo, relations, flag, date, metadata, **kwargs) if metadata is None: metadata = {} diff -r 039313d772d2 -r 461c9d940519 hgext3rd/evolve/safeguard.py --- a/hgext3rd/evolve/safeguard.py Thu Oct 19 21:23:21 2017 +0200 +++ b/hgext3rd/evolve/safeguard.py Thu Oct 19 14:46:06 2017 +0200 @@ -16,6 +16,8 @@ eh = exthelper.exthelper() +eh.configitem('experimental', 'auto-publish') + @eh.reposetup def setuppublishprevention(ui, repo): diff -r 039313d772d2 -r 461c9d940519 hgext3rd/evolve/serveronly.py --- a/hgext3rd/evolve/serveronly.py Thu Oct 19 21:23:21 2017 +0200 +++ b/hgext3rd/evolve/serveronly.py Thu Oct 19 14:46:06 2017 +0200 @@ -47,6 +47,7 @@ extsetup = eh.final_extsetup reposetup = eh.final_reposetup cmdtable = eh.cmdtable +configtable = eh.configtable @eh.reposetup def default2evolution(ui, repo):