diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -383,7 +383,16 @@ class cmdalias(object): self.fn = fn return - args = shlex.split(self.definition) + try: + args = shlex.split(self.definition) + except ValueError, inst: + def fn(ui, *args): + ui.warn(_("error in definition for alias '%s': %s\n") + % (self.name, inst)) + return 1 + self.fn = fn + self.badalias = True + return self.cmdname = cmd = args.pop(0) args = map(util.expandpath, args) diff --git a/tests/test-alias.t b/tests/test-alias.t --- a/tests/test-alias.t +++ b/tests/test-alias.t @@ -11,6 +11,7 @@ > ambiguous = s > recursive = recursive > nodefinition = + > noclosingquotation = ' > no--cwd = status --cwd elsewhere > no-R = status -R elsewhere > no--repo = status --repo elsewhere @@ -92,6 +93,15 @@ no definition no definition for alias 'nodefinition' +no closing quotation + + $ hg noclosing + error in definition for alias 'noclosingquotation': No closing quotation + [1] + $ hg help noclosing + error in definition for alias 'noclosingquotation': No closing quotation + + invalid options $ hg no--cwd