comparison mercurial/commands.py @ 35034:02845f7441af stable

dispatch: verify result of early command parsing Before, early options were stripped from args, and because of this, some kind of parsing errors weren't reported. For example, $ hg ci -m -Ra file would execute "hg ci -m file" in repository "a". This patch fixes the issue by parsing early options again by real getopt-based parser, and verifying the results. If the early parsing appears wrong, hg just aborts. The current error message seems not nice, and should be improved, maybe in V2 or follow-up. Note that this isn't a security feature because we can still do anything by using shell aliases.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 11 Nov 2017 12:40:13 +0900
parents ff178743e59b
children ee64e677c3cf f39cf992216f
comparison
equal deleted inserted replaced
35033:d3d35a55e03b 35034:02845f7441af
99 ('h', 'help', None, _('display help and exit')), 99 ('h', 'help', None, _('display help and exit')),
100 ('', 'hidden', False, _('consider hidden changesets')), 100 ('', 'hidden', False, _('consider hidden changesets')),
101 ('', 'pager', 'auto', 101 ('', 'pager', 'auto',
102 _("when to paginate (boolean, always, auto, or never)"), _('TYPE')), 102 _("when to paginate (boolean, always, auto, or never)"), _('TYPE')),
103 ] 103 ]
104
105 # options which must be pre-parsed before loading configs and extensions
106 # TODO: perhaps --debugger should be included
107 earlyoptflags = ("--cwd", "-R", "--repository", "--repo", "--config")
104 108
105 dryrunopts = cmdutil.dryrunopts 109 dryrunopts = cmdutil.dryrunopts
106 remoteopts = cmdutil.remoteopts 110 remoteopts = cmdutil.remoteopts
107 walkopts = cmdutil.walkopts 111 walkopts = cmdutil.walkopts
108 commitopts = cmdutil.commitopts 112 commitopts = cmdutil.commitopts