PANIC: hgweb.cgi doesn't work after upgrading to mercurial 4.2

Jesus Cea jcea at jcea.es
Wed May 3 22:07:38 UTC 2017


I just upgraded an old installation of mercurial running 4.1.3 to hg 4.2
with "pip install -U mercurial", as I always do. After doing that,
"hgweb.cgi" doesn't work anymore.

Checking "hgweb.cgi" with a browser, I see this LONG traceback.

Uninstalling mercurial 4.2 and reinstalling 4.1.3 brings "hgweb.cgi"
back to life.

How can I proceed, beside reverting to 4.1.3?.

"""
Name 	Description 	Contact 	Last modified 	  	


<class 'mercurial.error.UnknownCommand'>	Python 2.7.13:
/usr/local/bin/python
Wed May 3 23:58:25 2017

A problem occurred in a Python script. Here is the sequence of function
calls leading up to the error, in the order they occurred.
 /datos/sources/hg/cgi-bin.jcea/hgweb.cgi in ()
     15
     16 from mercurial import demandimport; demandimport.enable()
     17 from mercurial.hgweb import hgweb, wsgicgi
     18 application = hgweb(config)
=>   19 wsgicgi.launch(application)
wsgicgi = <module 'mercurial.hgweb.wsgicgi' from
'/usr/loc...on2.7/site-packages/mercurial/hgweb/wsgicgi.pyc'>,
wsgicgi.launch = <function launch>, application =
<mercurial.hgweb.hgwebdir_mod.hgwebdir object>
 /usr/local/lib/python2.7/site-packages/mercurial/hgweb/wsgicgi.py in
launch(application=<mercurial.hgweb.hgwebdir_mod.hgwebdir object>)
     83     content = application(environ, start_response)
     84     try:
=>   85         for chunk in content:
     86             write(chunk)
     87         if not headers_sent:
chunk = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN...r>\n
</thead>\n <tbody class="stripes2">\n ', content = <generator object
run_wsgi>
 /usr/local/lib/python2.7/site-packages/mercurial/hgweb/hgwebdir_mod.py
in run_wsgi(self=<mercurial.hgweb.hgwebdir_mod.hgwebdir object>,
req=<mercurial.hgweb.request.wsgirequest object>)
    222     def run_wsgi(self, req):
    223         with profiling.maybeprofile(self.ui):
=>  224             for r in self._runwsgi(req):
    225                 yield r
    226
r = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN...r>\n </thead>\n
<tbody class="stripes2">\n ', self =
<mercurial.hgweb.hgwebdir_mod.hgwebdir object>, self._runwsgi = <bound
method hgwebdir._runwsgi of <mercurial.hgweb.hgwebdir_mod.hgwebdir
object>>, req = <mercurial.hgweb.request.wsgirequest object>
 /usr/local/lib/python2.7/site-packages/mercurial/util.py in
increasingchunks(source=<generator object _flatten>, min=2048, max=65536)
    892     buf = []
    893     blen = 0
=>  894     for chunk in source:
    895         buf.append(chunk)
    896         blen += len(chunk)
chunk = '">Last modified</a></th>\n <th> </th>...r>\n </thead>\n
<tbody class="stripes2">\n ', source = <generator object _flatten>
 /usr/local/lib/python2.7/site-packages/mercurial/templater.py in
_flatten(thing=<generator object runtemplate>)
   1114                 yield str(i)
   1115             else:
=> 1116                 for j in _flatten(i):
   1117                     yield j
   1118
j = '</a> ', global _flatten = <function _flatten>, i = <generator
object runmap>
 /usr/local/lib/python2.7/site-packages/mercurial/templater.py in
_flatten(thing=<generator object runmap>)
   1105         yield str(thing)
   1106     else:
=> 1107         for i in thing:
   1108             i = templatekw.unwraphybrid(i)
   1109             if isinstance(i, str):
i undefined, thing = <generator object runmap>
 /usr/local/lib/python2.7/site-packages/mercurial/templater.py in
runmap(context=<mercurial.templater.engine object>,
mapping={'descending': False, 'entries': <function entries>, 'pathdef':
<listreverseiterator object>, 'sort_contact': 'contact',
'sort_description': 'description', 'sort_lastchange': 'lastchange',
'sort_name': 'name', 'sortcolumn': None, 'subdir': 'jcea/'}, data='entries')
    427                 raise error.ParseError(_("%r is not iterable") % d)
    428
=>  429     for i, v in enumerate(diter):
    430         lm = mapping.copy()
    431         lm['index'] = i
i undefined, v undefined, builtin enumerate = <type 'enumerate'>, diter
= <generator object entries>
 /usr/local/lib/python2.7/site-packages/mercurial/hgweb/hgwebdir_mod.py
in entries(sortcolumn=None, descending=False, subdir='jcea/',
**map={'entries': <function entries>, 'pathdef': <listreverseiterator
object>, 'sort_contact': 'contact', 'sort_description': 'description',
'sort_lastchange': 'lastchange', 'sort_name': 'name'})
    455                 rows = sorted(rows, key=lambda x: x[sortkey],
    456                               reverse=descending)
=>  457             for row, parity in zip(rows,
paritygen(self.stripecount)):
    458                 row['parity'] = parity
    459                 yield row
row undefined, parity undefined, builtin zip = <built-in function zip>,
rows = <generator object rawentries>, global paritygen = <function
paritygen>, self = <mercurial.hgweb.hgwebdir_mod.hgwebdir object>,
self.stripecount = 1
 /usr/local/lib/python2.7/site-packages/mercurial/hgweb/hgwebdir_mod.py
in rawentries(subdir='jcea/', **map={'entries': <function entries>,
'pathdef': <listreverseiterator object>, 'sort_contact': 'contact',
'sort_description': 'description', 'sort_lastchange': 'lastchange',
'sort_name': 'name'})
    415                 # update time with local timezone
    416                 try:
=>  417                     r = hg.repository(self.ui, path)
    418                 except IOError:
    419                     u.warn(_('error accessing repository at
%s\n') % path)
r undefined, global hg = <module 'mercurial.hg' from
'/usr/local/lib/python2.7/site-packages/mercurial/hg.pyc'>,
hg.repository = <function repository>, self =
<mercurial.hgweb.hgwebdir_mod.hgwebdir object>, self.ui =
<mercurial.ui.ui object>, path = '/datos/sources/hg/jcea/BitTornado'
 /usr/local/lib/python2.7/site-packages/mercurial/hg.py in
repository(ui=<mercurial.ui.ui object>,
path='/datos/sources/hg/jcea/BitTornado', create=False)
    164 def repository(ui, path='', create=False):
    165     """return a repository object for the specified path"""
=>  166     peer = _peerorrepo(ui, path, create)
    167     repo = peer.local()
    168     if not repo:
global peer = <function peer>, global _peerorrepo = <function
_peerorrepo>, ui = <mercurial.ui.ui object>, path =
'/datos/sources/hg/jcea/BitTornado', create = False
 /usr/local/lib/python2.7/site-packages/mercurial/hg.py in
_peerorrepo(ui=<mercurial.ui.ui object>,
path='/datos/sources/hg/jcea/BitTornado', create=False)
    151 def _peerorrepo(ui, path, create=False):
    152     """return a repository object for the specified path"""
=>  153     obj = _peerlookup(path).instance(ui, path, create)
    154     ui = getattr(obj, "ui", ui)
    155     for name, module in extensions.extensions(ui):
obj undefined, global _peerlookup = <function _peerlookup>, path =
'/datos/sources/hg/jcea/BitTornado', ).instance undefined, ui =
<mercurial.ui.ui object>, create = False
 /usr/local/lib/python2.7/site-packages/mercurial/localrepo.py in
instance(ui=<mercurial.ui.ui object>,
path='/datos/sources/hg/jcea/BitTornado', create=False)
   2017
   2018 def instance(ui, path, create):
=> 2019     return localrepository(ui, util.urllocalpath(path), create)
   2020
   2021 def islocal(path):
global localrepository = <class 'mercurial.localrepo.localrepository'>,
ui = <mercurial.ui.ui object>, global util = <module 'mercurial.util'
from '/usr/local/lib/python2.7/site-packages/mercurial/util.pyc'>,
util.urllocalpath = <function urllocalpath>, path =
'/datos/sources/hg/jcea/BitTornado', create = False
 /usr/local/lib/python2.7/site-packages/mercurial/localrepo.py in
__init__(self=<mercurial.localrepo.localrepository object>,
baseui=<mercurial.ui.ui object>,
path='/datos/sources/hg/jcea/BitTornado', create=False)
    285         try:
    286             self.ui.readconfig(self.vfs.join("hgrc"), self.root)
=>  287             self._loadextensions()
    288         except IOError:
    289             pass
self = <mercurial.localrepo.localrepository object>,
self._loadextensions = <bound method localrepository._loadextensions of
<mercurial.localrepo.localrepository object>>
 /usr/local/lib/python2.7/site-packages/mercurial/localrepo.py in
_loadextensions(self=<mercurial.localrepo.localrepository object>)
    400
    401     def _loadextensions(self):
=>  402         extensions.loadall(self.ui)
    403
    404     def _writecaches(self):
global extensions = <module 'mercurial.extensions' from
'/usr/local/...ython2.7/site-packages/mercurial/extensions.pyc'>,
extensions.loadall = <function loadall>, self =
<mercurial.localrepo.localrepository object>, self.ui = <mercurial.ui.ui
object>
 /usr/local/lib/python2.7/site-packages/mercurial/extensions.py in
loadall(ui=<mercurial.ui.ui object>)
    185
    186     for name in _order[newindex:]:
=>  187         _runuisetup(name, ui)
    188
    189     for name in _order[newindex:]:
global _runuisetup = <function _runuisetup>, name = 'largefiles', ui =
<mercurial.ui.ui object>
 /usr/local/lib/python2.7/site-packages/mercurial/extensions.py in
_runuisetup(name='largefiles', ui=<mercurial.ui.ui object>)
    150     uisetup = getattr(_extensions[name], 'uisetup', None)
    151     if uisetup:
=>  152         uisetup(ui)
    153
    154 def _runextsetup(name, ui):
uisetup = <function uisetup>, ui = <mercurial.ui.ui object>
 /usr/local/lib/python2.7/site-packages/hgext/largefiles/__init__.py in
uisetup(ui=<mercurial.ui.ui object>)
    135     localrepo.localrepository.featuresetupfuncs.add(featuresetup)
    136     hg.wirepeersetupfuncs.append(proto.wirereposetup)
=>  137     uisetupmod.uisetup(ui)
    138
    139 cmdtable = lfcommands.cmdtable
global uisetupmod = <proxied module 'uisetup'>, uisetupmod.uisetup =
<function uisetup>, ui = <mercurial.ui.ui object>
 /usr/local/lib/python2.7/site-packages/hgext/largefiles/uisetup.py in
uisetup(ui=<mercurial.ui.ui object>)
     84
     85     entry = extensions.wrapcommand(commands.table, 'debugstate',
=>   86                                    overrides.overridedebugstate)
     87     debugstateopt = [('', 'large', None, _('display largefiles
dirstate'))]
     88     entry[1].extend(debugstateopt)
global overrides = <module 'hgext.largefiles.overrides' from
'/usr/....7/site-packages/hgext/largefiles/overrides.pyc'>,
overrides.overridedebugstate = <function overridedebugstate>
 /usr/local/lib/python2.7/site-packages/mercurial/extensions.py in
wrapcommand(table={'^add': (<function closure>, [('I', 'include', [],
'include names matching the given patterns', 'PATTERN'), ('X',
'exclude', [], 'exclude names matching the given patterns', 'PATTERN'),
('S', 'subrepos', None, 'recurse into subrepositories'), ('n',
'dry-run', None, 'do not perform actions, just print output'), ('',
'large', None, 'add as largefile'), ('', 'normal', None, 'add as normal
file'), ('', 'lfsize', '', 'add all files above this size (in megabytes)
as largefiles (default: 10)')], '[OPTION]... [FILE]...'),
'^annotate|blame': (<function annotate>, [('r', 'rev', '', 'annotate the
specified revision', 'REV'), ('', 'follow', None, 'follow copies/renames
and list the filename (DEPRECATED)'), ('', 'no-follow', None, "don't
follow copies and renames"), ('a', 'text', None, 'treat all files as
text'), ('u', 'user', None, 'list the author (long with -v)'), ('f',
'file', None, 'list the filename'), ('d', 'date', None, 'list the date
(short with -q)'), ('n', 'number', None, 'list the revision number
(default)'), ('c', 'changeset', None, 'list the changeset'), ('l',
'line-number', None, 'show line number at the first appearance'), ('w',
'ignore-all-space', None, 'ignore white space when comparing lines'),
('b', 'ignore-space-change', None, 'ignore changes in the amount of
white space'), ('B', 'ignore-blank-lines', None, 'ignore changes whose
lines are all blank'), ('I', 'include', [], 'include names matching the
given patterns', 'PATTERN'), ('X', 'exclude', [], 'exclude names
matching the given patterns', 'PATTERN'), ('T', 'template', '', 'display
with template (EXPERIMENTAL)', 'TEMPLATE')], '[-r REV] [-f] [-a] [-u]
[-d] [-n] [-c] [-l] FILE...'), '^clone': (<function clone>, [('U',
'noupdate', None, 'the clone will include an empty working directory
(only a repository)'), ('u', 'updaterev', '', 'revision, tag, or branch
to check out', 'REV'), ('r', 'rev', [], 'include the specified
changeset', 'REV'), ('b', 'branch', [], 'clone only the specified
branch', 'BRANCH'), ('', 'pull', None, 'use pull protocol to copy
metadata'), ('', 'uncompressed', None, 'use uncompressed transfer (fast
over LAN)'), ('e', 'ssh', '', 'specify ssh command to use', 'CMD'), ('',
'remotecmd', '', 'specify hg command to run on the remote side', 'CMD'),
('', 'insecure', None, 'do not verify server certificate (ignoring
web.cacerts config)')], '[OPTION]... SOURCE [DEST]'), '^commit|ci':
(<function commit>, [('A', 'addremove', None, 'mark new/missing files as
added/removed before committing'), ('', 'close-branch', None, 'mark a
branch head as closed'), ('', 'amend', None, 'amend the parent of the
working directory'), ('s', 'secret', None, 'use the secret phase for
committing'), ('e', 'edit', None, 'invoke editor on commit messages'),
('i', 'interactive', None, 'use interactive mode'), ('I', 'include', [],
'include names matching the given patterns', 'PATTERN'), ('X',
'exclude', [], 'exclude names matching the given patterns', 'PATTERN'),
('m', 'message', '', 'use text as commit message', 'TEXT'), ('l',
'logfile', '', 'read commit message from file', 'FILE'), ('d', 'date',
'', 'record the specified date as commit date', 'DATE'), ('u', 'user',
'', 'record the specified user as committer', 'USER'), ('S', 'subrepos',
None, 'recurse into subrepositories')], '[OPTION]... [FILE]...'),
'^diff': (<function diff>, [('r', 'rev', [], 'revision', 'REV'), ('c',
'change', '', 'change made by revision', 'REV'), ('a', 'text', None,
'treat all files as text'), ('g', 'git', None, 'use git extended diff
format'), ('', 'binary', None, 'generate binary diffs in git mode
(default)'), ('', 'nodates', None, 'omit dates from diff headers'), ('',
'noprefix', None, 'omit a/ and b/ prefixes from filenames'), ('p',
'show-function', None, 'show which function each change is in'), ('',
'reverse', None, 'produce a diff that undoes the changes'), ('w',
'ignore-all-space', None, 'ignore white space when comparing lines'),
('b', 'ignore-space-change', None, 'ignore changes in the amount of
white space'), ('B', 'ignore-blank-lines', None, 'ignore changes whose
lines are all blank'), ('U', 'unified', '', 'number of lines of context
to show', 'NUM'), ('', 'stat', None, 'output diffstat-style summary of
changes'), ('', 'root', '', 'produce diffs relative to subdirectory',
'DIR'), ('I', 'include', [], 'include names matching the given
patterns', 'PATTERN'), ('X', 'exclude', [], 'exclude names matching the
given patterns', 'PATTERN'), ('S', 'subrepos', None, 'recurse into
subrepositories')], '[OPTION]... ([-c REV] | [-r REV1 [-r REV2]])
[FILE]...'), '^export': (<function export>, [('o', 'output', '', 'print
output to file with formatted name', 'FORMAT'), ('', 'switch-parent',
None, 'diff against the second parent'), ('r', 'rev', [], 'revisions to
export', 'REV'), ('a', 'text', None, 'treat all files as text'), ('g',
'git', None, 'use git extended diff format'), ('', 'binary', None,
'generate binary diffs in git mode (default)'), ('', 'nodates', None,
'omit dates from diff headers')], '[OPTION]... [-o OUTFILESPEC] [-r]
[REV]...'), '^forget': (<function forget>, [('I', 'include', [],
'include names matching the given patterns', 'PATTERN'), ('X',
'exclude', [], 'exclude names matching the given patterns', 'PATTERN')],
'[OPTION]... FILE...'), '^init': (<function init>, [('e', 'ssh', '',
'specify ssh command to use', 'CMD'), ('', 'remotecmd', '', 'specify hg
command to run on the remote side', 'CMD'), ('', 'insecure', None, 'do
not verify server certificate (ignoring web.cacerts config)')], '[-e
CMD] [--remotecmd CMD] [DEST]'), '^log|history': (<function closure>,
[('f', 'follow', None, 'follow changeset history, or file history across
copies and renames'), ('', 'follow-first', None, 'only follow the first
parent of merge changesets (DEPRECATED)'), ('d', 'date', '', 'show
revisions matching date spec', 'DATE'), ('C', 'copies', None, 'show
copied files'), ('k', 'keyword', [], 'do case-insensitive search for a
given text', 'TEXT'), ('r', 'rev', [], 'show the specified revision or
revset', 'REV'), ('', 'removed', None, 'include revisions where files
were removed'), ('m', 'only-merges', None, 'show only merges
(DEPRECATED)'), ('u', 'user', [], 'revisions committed by user',
'USER'), ('', 'only-branch', [], 'show only changesets within the given
named branch (DEPRECATED)', 'BRANCH'), ('b', 'branch', [], 'show
changesets within the given named branch', 'BRANCH'), ('P', 'prune', [],
'do not display revision or any of its ancestors', 'REV'), ('p',
'patch', None, 'show patch'), ('g', 'git', None, 'use git extended diff
format'), ('l', 'limit', '', 'limit number of changes displayed',
'NUM'), ('M', 'no-merges', None, 'do not show merges'), ('', 'stat',
None, 'output diffstat-style summary of changes'), ('G', 'graph', None,
'show the revision DAG'), ('', 'style', '', 'display using template map
file (DEPRECATED)', 'STYLE'), ('T', 'template', '', 'display with
template', 'TEMPLATE'), ...], '[OPTION]... [FILE]'), '^merge':
(<function merge>, [('f', 'force', None, 'force a merge including
outstanding changes (DEPRECATED)'), ('r', 'rev', '', 'revision to
merge', 'REV'), ('P', 'preview', None, 'review revisions to merge (no
merge is performed)'), ('t', 'tool', '', 'specify merge tool')], '[-P]
[[-r] REV]'), ...}, command='debugstate', wrapper=<function
overridedebugstate>, synopsis=None, docstring=None)
    270     '''
    271     assert callable(wrapper)
=>  272     aliases, entry = cmdutil.findcmd(command, table)
    273     for alias, e in table.iteritems():
    274         if e is entry:
aliases undefined, entry undefined, global cmdutil = <module
'mercurial.cmdutil' from
'/usr/local/lib/python2.7/site-packages/mercurial/cmdutil.pyc'>,
cmdutil.findcmd = <function findcmd>, command = 'debugstate', table =
{'^add': (<function closure>, [('I', 'include', [], 'include names
matching the given patterns', 'PATTERN'), ('X', 'exclude', [], 'exclude
names matching the given patterns', 'PATTERN'), ('S', 'subrepos', None,
'recurse into subrepositories'), ('n', 'dry-run', None, 'do not perform
actions, just print output'), ('', 'large', None, 'add as largefile'),
('', 'normal', None, 'add as normal file'), ('', 'lfsize', '', 'add all
files above this size (in megabytes) as largefiles (default: 10)')],
'[OPTION]... [FILE]...'), '^annotate|blame': (<function annotate>,
[('r', 'rev', '', 'annotate the specified revision', 'REV'), ('',
'follow', None, 'follow copies/renames and list the filename
(DEPRECATED)'), ('', 'no-follow', None, "don't follow copies and
renames"), ('a', 'text', None, 'treat all files as text'), ('u', 'user',
None, 'list the author (long with -v)'), ('f', 'file', None, 'list the
filename'), ('d', 'date', None, 'list the date (short with -q)'), ('n',
'number', None, 'list the revision number (default)'), ('c',
'changeset', None, 'list the changeset'), ('l', 'line-number', None,
'show line number at the first appearance'), ('w', 'ignore-all-space',
None, 'ignore white space when comparing lines'), ('b',
'ignore-space-change', None, 'ignore changes in the amount of white
space'), ('B', 'ignore-blank-lines', None, 'ignore changes whose lines
are all blank'), ('I', 'include', [], 'include names matching the given
patterns', 'PATTERN'), ('X', 'exclude', [], 'exclude names matching the
given patterns', 'PATTERN'), ('T', 'template', '', 'display with
template (EXPERIMENTAL)', 'TEMPLATE')], '[-r REV] [-f] [-a] [-u] [-d]
[-n] [-c] [-l] FILE...'), '^clone': (<function clone>, [('U',
'noupdate', None, 'the clone will include an empty working directory
(only a repository)'), ('u', 'updaterev', '', 'revision, tag, or branch
to check out', 'REV'), ('r', 'rev', [], 'include the specified
changeset', 'REV'), ('b', 'branch', [], 'clone only the specified
branch', 'BRANCH'), ('', 'pull', None, 'use pull protocol to copy
metadata'), ('', 'uncompressed', None, 'use uncompressed transfer (fast
over LAN)'), ('e', 'ssh', '', 'specify ssh command to use', 'CMD'), ('',
'remotecmd', '', 'specify hg command to run on the remote side', 'CMD'),
('', 'insecure', None, 'do not verify server certificate (ignoring
web.cacerts config)')], '[OPTION]... SOURCE [DEST]'), '^commit|ci':
(<function commit>, [('A', 'addremove', None, 'mark new/missing files as
added/removed before committing'), ('', 'close-branch', None, 'mark a
branch head as closed'), ('', 'amend', None, 'amend the parent of the
working directory'), ('s', 'secret', None, 'use the secret phase for
committing'), ('e', 'edit', None, 'invoke editor on commit messages'),
('i', 'interactive', None, 'use interactive mode'), ('I', 'include', [],
'include names matching the given patterns', 'PATTERN'), ('X',
'exclude', [], 'exclude names matching the given patterns', 'PATTERN'),
('m', 'message', '', 'use text as commit message', 'TEXT'), ('l',
'logfile', '', 'read commit message from file', 'FILE'), ('d', 'date',
'', 'record the specified date as commit date', 'DATE'), ('u', 'user',
'', 'record the specified user as committer', 'USER'), ('S', 'subrepos',
None, 'recurse into subrepositories')], '[OPTION]... [FILE]...'),
'^diff': (<function diff>, [('r', 'rev', [], 'revision', 'REV'), ('c',
'change', '', 'change made by revision', 'REV'), ('a', 'text', None,
'treat all files as text'), ('g', 'git', None, 'use git extended diff
format'), ('', 'binary', None, 'generate binary diffs in git mode
(default)'), ('', 'nodates', None, 'omit dates from diff headers'), ('',
'noprefix', None, 'omit a/ and b/ prefixes from filenames'), ('p',
'show-function', None, 'show which function each change is in'), ('',
'reverse', None, 'produce a diff that undoes the changes'), ('w',
'ignore-all-space', None, 'ignore white space when comparing lines'),
('b', 'ignore-space-change', None, 'ignore changes in the amount of
white space'), ('B', 'ignore-blank-lines', None, 'ignore changes whose
lines are all blank'), ('U', 'unified', '', 'number of lines of context
to show', 'NUM'), ('', 'stat', None, 'output diffstat-style summary of
changes'), ('', 'root', '', 'produce diffs relative to subdirectory',
'DIR'), ('I', 'include', [], 'include names matching the given
patterns', 'PATTERN'), ('X', 'exclude', [], 'exclude names matching the
given patterns', 'PATTERN'), ('S', 'subrepos', None, 'recurse into
subrepositories')], '[OPTION]... ([-c REV] | [-r REV1 [-r REV2]])
[FILE]...'), '^export': (<function export>, [('o', 'output', '', 'print
output to file with formatted name', 'FORMAT'), ('', 'switch-parent',
None, 'diff against the second parent'), ('r', 'rev', [], 'revisions to
export', 'REV'), ('a', 'text', None, 'treat all files as text'), ('g',
'git', None, 'use git extended diff format'), ('', 'binary', None,
'generate binary diffs in git mode (default)'), ('', 'nodates', None,
'omit dates from diff headers')], '[OPTION]... [-o OUTFILESPEC] [-r]
[REV]...'), '^forget': (<function forget>, [('I', 'include', [],
'include names matching the given patterns', 'PATTERN'), ('X',
'exclude', [], 'exclude names matching the given patterns', 'PATTERN')],
'[OPTION]... FILE...'), '^init': (<function init>, [('e', 'ssh', '',
'specify ssh command to use', 'CMD'), ('', 'remotecmd', '', 'specify hg
command to run on the remote side', 'CMD'), ('', 'insecure', None, 'do
not verify server certificate (ignoring web.cacerts config)')], '[-e
CMD] [--remotecmd CMD] [DEST]'), '^log|history': (<function closure>,
[('f', 'follow', None, 'follow changeset history, or file history across
copies and renames'), ('', 'follow-first', None, 'only follow the first
parent of merge changesets (DEPRECATED)'), ('d', 'date', '', 'show
revisions matching date spec', 'DATE'), ('C', 'copies', None, 'show
copied files'), ('k', 'keyword', [], 'do case-insensitive search for a
given text', 'TEXT'), ('r', 'rev', [], 'show the specified revision or
revset', 'REV'), ('', 'removed', None, 'include revisions where files
were removed'), ('m', 'only-merges', None, 'show only merges
(DEPRECATED)'), ('u', 'user', [], 'revisions committed by user',
'USER'), ('', 'only-branch', [], 'show only changesets within the given
named branch (DEPRECATED)', 'BRANCH'), ('b', 'branch', [], 'show
changesets within the given named branch', 'BRANCH'), ('P', 'prune', [],
'do not display revision or any of its ancestors', 'REV'), ('p',
'patch', None, 'show patch'), ('g', 'git', None, 'use git extended diff
format'), ('l', 'limit', '', 'limit number of changes displayed',
'NUM'), ('M', 'no-merges', None, 'do not show merges'), ('', 'stat',
None, 'output diffstat-style summary of changes'), ('G', 'graph', None,
'show the revision DAG'), ('', 'style', '', 'display using template map
file (DEPRECATED)', 'STYLE'), ('T', 'template', '', 'display with
template', 'TEMPLATE'), ...], '[OPTION]... [FILE]'), '^merge':
(<function merge>, [('f', 'force', None, 'force a merge including
outstanding changes (DEPRECATED)'), ('r', 'rev', '', 'revision to
merge', 'REV'), ('P', 'preview', None, 'review revisions to merge (no
merge is performed)'), ('t', 'tool', '', 'specify merge tool')], '[-P]
[[-r] REV]'), ...}
 /usr/local/lib/python2.7/site-packages/mercurial/cmdutil.py in
findcmd(cmd='debugstate', table={'^add': (<function closure>, [('I',
'include', [], 'include names matching the given patterns', 'PATTERN'),
('X', 'exclude', [], 'exclude names matching the given patterns',
'PATTERN'), ('S', 'subrepos', None, 'recurse into subrepositories'),
('n', 'dry-run', None, 'do not perform actions, just print output'),
('', 'large', None, 'add as largefile'), ('', 'normal', None, 'add as
normal file'), ('', 'lfsize', '', 'add all files above this size (in
megabytes) as largefiles (default: 10)')], '[OPTION]... [FILE]...'),
'^annotate|blame': (<function annotate>, [('r', 'rev', '', 'annotate the
specified revision', 'REV'), ('', 'follow', None, 'follow copies/renames
and list the filename (DEPRECATED)'), ('', 'no-follow', None, "don't
follow copies and renames"), ('a', 'text', None, 'treat all files as
text'), ('u', 'user', None, 'list the author (long with -v)'), ('f',
'file', None, 'list the filename'), ('d', 'date', None, 'list the date
(short with -q)'), ('n', 'number', None, 'list the revision number
(default)'), ('c', 'changeset', None, 'list the changeset'), ('l',
'line-number', None, 'show line number at the first appearance'), ('w',
'ignore-all-space', None, 'ignore white space when comparing lines'),
('b', 'ignore-space-change', None, 'ignore changes in the amount of
white space'), ('B', 'ignore-blank-lines', None, 'ignore changes whose
lines are all blank'), ('I', 'include', [], 'include names matching the
given patterns', 'PATTERN'), ('X', 'exclude', [], 'exclude names
matching the given patterns', 'PATTERN'), ('T', 'template', '', 'display
with template (EXPERIMENTAL)', 'TEMPLATE')], '[-r REV] [-f] [-a] [-u]
[-d] [-n] [-c] [-l] FILE...'), '^clone': (<function clone>, [('U',
'noupdate', None, 'the clone will include an empty working directory
(only a repository)'), ('u', 'updaterev', '', 'revision, tag, or branch
to check out', 'REV'), ('r', 'rev', [], 'include the specified
changeset', 'REV'), ('b', 'branch', [], 'clone only the specified
branch', 'BRANCH'), ('', 'pull', None, 'use pull protocol to copy
metadata'), ('', 'uncompressed', None, 'use uncompressed transfer (fast
over LAN)'), ('e', 'ssh', '', 'specify ssh command to use', 'CMD'), ('',
'remotecmd', '', 'specify hg command to run on the remote side', 'CMD'),
('', 'insecure', None, 'do not verify server certificate (ignoring
web.cacerts config)')], '[OPTION]... SOURCE [DEST]'), '^commit|ci':
(<function commit>, [('A', 'addremove', None, 'mark new/missing files as
added/removed before committing'), ('', 'close-branch', None, 'mark a
branch head as closed'), ('', 'amend', None, 'amend the parent of the
working directory'), ('s', 'secret', None, 'use the secret phase for
committing'), ('e', 'edit', None, 'invoke editor on commit messages'),
('i', 'interactive', None, 'use interactive mode'), ('I', 'include', [],
'include names matching the given patterns', 'PATTERN'), ('X',
'exclude', [], 'exclude names matching the given patterns', 'PATTERN'),
('m', 'message', '', 'use text as commit message', 'TEXT'), ('l',
'logfile', '', 'read commit message from file', 'FILE'), ('d', 'date',
'', 'record the specified date as commit date', 'DATE'), ('u', 'user',
'', 'record the specified user as committer', 'USER'), ('S', 'subrepos',
None, 'recurse into subrepositories')], '[OPTION]... [FILE]...'),
'^diff': (<function diff>, [('r', 'rev', [], 'revision', 'REV'), ('c',
'change', '', 'change made by revision', 'REV'), ('a', 'text', None,
'treat all files as text'), ('g', 'git', None, 'use git extended diff
format'), ('', 'binary', None, 'generate binary diffs in git mode
(default)'), ('', 'nodates', None, 'omit dates from diff headers'), ('',
'noprefix', None, 'omit a/ and b/ prefixes from filenames'), ('p',
'show-function', None, 'show which function each change is in'), ('',
'reverse', None, 'produce a diff that undoes the changes'), ('w',
'ignore-all-space', None, 'ignore white space when comparing lines'),
('b', 'ignore-space-change', None, 'ignore changes in the amount of
white space'), ('B', 'ignore-blank-lines', None, 'ignore changes whose
lines are all blank'), ('U', 'unified', '', 'number of lines of context
to show', 'NUM'), ('', 'stat', None, 'output diffstat-style summary of
changes'), ('', 'root', '', 'produce diffs relative to subdirectory',
'DIR'), ('I', 'include', [], 'include names matching the given
patterns', 'PATTERN'), ('X', 'exclude', [], 'exclude names matching the
given patterns', 'PATTERN'), ('S', 'subrepos', None, 'recurse into
subrepositories')], '[OPTION]... ([-c REV] | [-r REV1 [-r REV2]])
[FILE]...'), '^export': (<function export>, [('o', 'output', '', 'print
output to file with formatted name', 'FORMAT'), ('', 'switch-parent',
None, 'diff against the second parent'), ('r', 'rev', [], 'revisions to
export', 'REV'), ('a', 'text', None, 'treat all files as text'), ('g',
'git', None, 'use git extended diff format'), ('', 'binary', None,
'generate binary diffs in git mode (default)'), ('', 'nodates', None,
'omit dates from diff headers')], '[OPTION]... [-o OUTFILESPEC] [-r]
[REV]...'), '^forget': (<function forget>, [('I', 'include', [],
'include names matching the given patterns', 'PATTERN'), ('X',
'exclude', [], 'exclude names matching the given patterns', 'PATTERN')],
'[OPTION]... FILE...'), '^init': (<function init>, [('e', 'ssh', '',
'specify ssh command to use', 'CMD'), ('', 'remotecmd', '', 'specify hg
command to run on the remote side', 'CMD'), ('', 'insecure', None, 'do
not verify server certificate (ignoring web.cacerts config)')], '[-e
CMD] [--remotecmd CMD] [DEST]'), '^log|history': (<function closure>,
[('f', 'follow', None, 'follow changeset history, or file history across
copies and renames'), ('', 'follow-first', None, 'only follow the first
parent of merge changesets (DEPRECATED)'), ('d', 'date', '', 'show
revisions matching date spec', 'DATE'), ('C', 'copies', None, 'show
copied files'), ('k', 'keyword', [], 'do case-insensitive search for a
given text', 'TEXT'), ('r', 'rev', [], 'show the specified revision or
revset', 'REV'), ('', 'removed', None, 'include revisions where files
were removed'), ('m', 'only-merges', None, 'show only merges
(DEPRECATED)'), ('u', 'user', [], 'revisions committed by user',
'USER'), ('', 'only-branch', [], 'show only changesets within the given
named branch (DEPRECATED)', 'BRANCH'), ('b', 'branch', [], 'show
changesets within the given named branch', 'BRANCH'), ('P', 'prune', [],
'do not display revision or any of its ancestors', 'REV'), ('p',
'patch', None, 'show patch'), ('g', 'git', None, 'use git extended diff
format'), ('l', 'limit', '', 'limit number of changes displayed',
'NUM'), ('M', 'no-merges', None, 'do not show merges'), ('', 'stat',
None, 'output diffstat-style summary of changes'), ('G', 'graph', None,
'show the revision DAG'), ('', 'style', '', 'display using template map
file (DEPRECATED)', 'STYLE'), ('T', 'template', '', 'display with
template', 'TEMPLATE'), ...], '[OPTION]... [FILE]'), '^merge':
(<function merge>, [('f', 'force', None, 'force a merge including
outstanding changes (DEPRECATED)'), ('r', 'rev', '', 'revision to
merge', 'REV'), ('P', 'preview', None, 'review revisions to merge (no
merge is performed)'), ('t', 'tool', '', 'specify merge tool')], '[-P]
[[-r] REV]'), ...}, strict=True)
    348         return choice.values()[0]
    349
=>  350     raise error.UnknownCommand(cmd, allcmds)
    351
    352 def findrepo(p):
global error = <module 'mercurial.error' from
'/usr/local/lib/python2.7/site-packages/mercurial/error.pyc'>,
error.UnknownCommand = <class 'mercurial.error.UnknownCommand'>, cmd =
'debugstate', allcmds = ['locate', 'help', 'summary', 'sum', 'annotate',
'blame', 'tip', 'recover', 'serve', 'tag', 'config', 'showconfig',
'debugconfig', 'unbundle', 'manifest', 'identify', 'id', 'archive',
'graft', 'paths', ...]

<class 'mercurial.error.UnknownCommand'>: ('debugstate', ['locate',
'help', 'summary', 'sum', 'annotate', 'blame', 'tip', 'recover',
'serve', 'tag', 'config', 'showconfig', 'debugconfig', 'unbundle',
'manifest', 'identify', 'id', 'archive', 'graft', 'paths', 'push',
'heads', 'verify', 'remove', 'rm', 'addremove', 'backout', 'version',
'parents', 'branch', 'copy', 'cp', 'status', 'st', 'files', 'import',
'patch', 'resolve', 'rollback', 'tags', 'rename', 'move', 'mv',
'bundle', 'bookmarks', 'bookmark', 'update', 'up', 'checkout', 'co',
'pull', 'init', 'phase', 'grep', 'forget', 'add', 'log', 'history',
'clone', 'branches', 'commit', 'ci', 'incoming', 'in', 'bisect',
'revert', 'cat', 'merge', 'outgoing', 'out', 'root', 'diff', 'export'])
      args = ('debugstate', ['locate', 'help', 'summary', 'sum',
'annotate', 'blame', 'tip', 'recover', 'serve', 'tag', 'config',
'showconfig', 'debugconfig', 'unbundle', 'manifest', 'identify', 'id',
'archive', 'graft', 'paths', ...])
      message = ''
"""

-- 
Jesús Cea Avión                         _/_/      _/_/_/        _/_/_/
jcea at jcea.es - http://www.jcea.es/     _/_/    _/_/  _/_/    _/_/  _/_/
Twitter: @jcea                        _/_/    _/_/          _/_/_/_/_/
jabber / xmpp:jcea at jabber.org  _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://www.mercurial-scm.org/pipermail/mercurial/attachments/20170504/4ccd80c1/attachment.sig>


More information about the Mercurial mailing list