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