diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -488,7 +488,7 @@ return aliasargs(self.fn, args) def __getattr__(self, name): - adefaults = {r'norepo': True, + adefaults = {r'norepo': True, r'hiddenlevel': 'UNRECOVERABLE_WRITE', r'optionalrepo': False, r'inferrepo': False} if name not in adefaults: raise AttributeError(name) diff --git a/mercurial/registrar.py b/mercurial/registrar.py --- a/mercurial/registrar.py +++ b/mercurial/registrar.py @@ -147,9 +147,15 @@ def _doregister(self, func, name, options=(), synopsis=None, norepo=False, optionalrepo=False, inferrepo=False, hiddenlevel='UNRECOVERABLE_WRITE'): + possiblehiddenlevels = set(['UNRECOVERABLE_WRITE', + 'RECOVERABLE_WRITE', 'READ_ONLY']) func.norepo = norepo func.optionalrepo = optionalrepo func.inferrepo = inferrepo + if hiddenlevel not in possiblehiddenlevels: + raise error.ProgrammingError(_("unknown hiddenlevel value '%s' for + '%s' command") % (hiddenlevel, name)) + func.hiddenlevel = hiddenlevel if synopsis: self._table[name] = func, list(options), synopsis else: