Comments
Patch
@@ -43,7 +43,35 @@ revlogopts = getattr(commands, "debugrev
])
cmdtable = {}
-command = cmdutil.command(cmdtable)
+
+# define parsealiases locally, because cmdutil.parsealiases has been
+# available since 1.5 (or 6252852b4332)
+def parsealiases(cmd):
+ return cmd.lstrip("^").split("|")
+
+if safehasattr(cmdutil, 'command'):
+ import inspect
+ command = cmdutil.command(cmdtable)
+ if 'norepo' not in inspect.getargspec(command)[0]:
+ # "norepo" option has been available since 3.1 (or 75a96326cecb)
+ _command = command
+ def command(name, options=(), synopsis=None, norepo=False):
+ if norepo:
+ commands.norepo += ' %s' % ' '.join(parsealiases(name))
+ return _command(name, list(options), synopsis)
+else:
+ # define "@command" annotation locally, because cmdutil.command
+ # has been available since 1.9 (or 2daa5179e73f)
+ def command(name, options=(), synopsis=None, norepo=False):
+ def decorator(func):
+ if synopsis:
+ cmdtable[name] = func, list(options), synopsis
+ else:
+ cmdtable[name] = func, list(options)
+ if norepo:
+ commands.norepo += ' %s' % ' '.join(parsealiases(name))
+ return func
+ return decorator
def getlen(ui):
if ui.configbool("perf", "stub"):