Mercurial > public > mercurial-scm > hg
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 |