diff mercurial/dispatch.py @ 11695:ee8f36a6c766

alias: improved diagnostic when arguments include --cwd, etc. The logic pre-emptively checks for -R, --repo, --repository and --cwd in order to give the user a more helpful error message. In addition, each option is handled invididually, which avoids listing them all in the error. Before: % hg --config alias.broken='push --cwd /dev/null' broken abort: Option --cwd may not be abbreviated! After: % hg --config alias.broken='push --cwd /dev/null' broken error in definition for alias 'broken': --cwd may only be given on the command line
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Tue, 27 Jul 2010 14:43:40 +0200
parents c5e555e064d0
children 708291e9389c
line wrap: on
line diff
--- a/mercurial/dispatch.py	Tue Jul 27 20:50:09 2010 +0530
+++ b/mercurial/dispatch.py	Tue Jul 27 14:43:40 2010 +0200
@@ -223,6 +223,18 @@
         cmd = args.pop(0)
         args = map(util.expandpath, args)
 
+        for invalidarg in ("--cwd", "-R", "--repository", "--repo"):
+            if _earlygetopt([invalidarg], args):
+                def fn(ui, *args):
+                    ui.warn(_("error in definition for alias '%s': %s may only "
+                              "be given on the command line\n")
+                            % (self.name, invalidarg))
+                    return 1
+
+                self.fn = fn
+                self.badalias = True
+                return
+
         try:
             tableentry = cmdutil.findcmd(cmd, cmdtable, False)[1]
             if len(tableentry) > 2: