comparison mercurial/commands.py @ 21775:5403245edb3a

commands: define optionalrepo in command decorator
author Gregory Szorc <gregory.szorc@gmail.com>
date Sun, 04 May 2014 22:16:05 -0700
parents 16aeb28caaa6
children f6a6d07b66b3
comparison
equal deleted inserted replaced
21774:b280d0b60bc3 21775:5403245edb3a
27 command = cmdutil.command(table) 27 command = cmdutil.command(table)
28 28
29 # Space delimited list of commands that don't require local repositories. 29 # Space delimited list of commands that don't require local repositories.
30 # This should be populated by passing norepo=True into the @command decorator. 30 # This should be populated by passing norepo=True into the @command decorator.
31 norepo = '' 31 norepo = ''
32 optionalrepo = ("identify paths serve config showconfig debugancestor debugdag" 32 # Space delimited list of commands that optionally require local repositories.
33 " debugdata debugindex debugindexdot debugrevlog") 33 # This should be populated by passing optionalrepo=True into the @command
34 # decorator.
35 optionalrepo = ''
34 inferrepo = ("add addremove annotate cat commit diff grep forget log parents" 36 inferrepo = ("add addremove annotate cat commit diff grep forget log parents"
35 " remove resolve status debugwalk") 37 " remove resolve status debugwalk")
36 # common command options 38 # common command options
37 39
38 globalopts = [ 40 globalopts = [
1464 @command('config|showconfig|debugconfig', 1466 @command('config|showconfig|debugconfig',
1465 [('u', 'untrusted', None, _('show untrusted configuration options')), 1467 [('u', 'untrusted', None, _('show untrusted configuration options')),
1466 ('e', 'edit', None, _('edit user config')), 1468 ('e', 'edit', None, _('edit user config')),
1467 ('l', 'local', None, _('edit repository config')), 1469 ('l', 'local', None, _('edit repository config')),
1468 ('g', 'global', None, _('edit global config'))], 1470 ('g', 'global', None, _('edit global config'))],
1469 _('[-u] [NAME]...')) 1471 _('[-u] [NAME]...'),
1472 optionalrepo=True)
1470 def config(ui, repo, *values, **opts): 1473 def config(ui, repo, *values, **opts):
1471 """show combined config settings from all hgrc files 1474 """show combined config settings from all hgrc files
1472 1475
1473 With no arguments, print names and values of all config items. 1476 With no arguments, print names and values of all config items.
1474 1477
1583 try: 1586 try:
1584 return cmdutil.copy(ui, repo, pats, opts) 1587 return cmdutil.copy(ui, repo, pats, opts)
1585 finally: 1588 finally:
1586 wlock.release() 1589 wlock.release()
1587 1590
1588 @command('debugancestor', [], _('[INDEX] REV1 REV2')) 1591 @command('debugancestor', [], _('[INDEX] REV1 REV2'), optionalrepo=True)
1589 def debugancestor(ui, repo, *args): 1592 def debugancestor(ui, repo, *args):
1590 """find the ancestor revision of two revisions in a given index""" 1593 """find the ancestor revision of two revisions in a given index"""
1591 if len(args) == 3: 1594 if len(args) == 3:
1592 index, rev1, rev2 = args 1595 index, rev1, rev2 = args
1593 r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), index) 1596 r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), index)
1875 @command('debugdag', 1878 @command('debugdag',
1876 [('t', 'tags', None, _('use tags as labels')), 1879 [('t', 'tags', None, _('use tags as labels')),
1877 ('b', 'branches', None, _('annotate with branch names')), 1880 ('b', 'branches', None, _('annotate with branch names')),
1878 ('', 'dots', None, _('use dots for runs')), 1881 ('', 'dots', None, _('use dots for runs')),
1879 ('s', 'spaces', None, _('separate elements by spaces'))], 1882 ('s', 'spaces', None, _('separate elements by spaces'))],
1880 _('[OPTION]... [FILE [REV]...]')) 1883 _('[OPTION]... [FILE [REV]...]'),
1884 optionalrepo=True)
1881 def debugdag(ui, repo, file_=None, *revs, **opts): 1885 def debugdag(ui, repo, file_=None, *revs, **opts):
1882 """format the changelog or an index DAG as a concise textual description 1886 """format the changelog or an index DAG as a concise textual description
1883 1887
1884 If you pass a revlog index, the revlog's DAG is emitted. If you list 1888 If you pass a revlog index, the revlog's DAG is emitted. If you list
1885 revision numbers, they get labeled in the output as rN. 1889 revision numbers, they get labeled in the output as rN.
1950 raise util.Abort(_('invalid revision identifier %s') % rev) 1954 raise util.Abort(_('invalid revision identifier %s') % rev)
1951 1955
1952 @command('debugdate', 1956 @command('debugdate',
1953 [('e', 'extended', None, _('try extended date formats'))], 1957 [('e', 'extended', None, _('try extended date formats'))],
1954 _('[-e] DATE [RANGE]'), 1958 _('[-e] DATE [RANGE]'),
1955 norepo=True) 1959 norepo=True, optionalrepo=True)
1956 def debugdate(ui, date, range=None, **opts): 1960 def debugdate(ui, date, range=None, **opts):
1957 """parse and display a date""" 1961 """parse and display a date"""
1958 if opts["extended"]: 1962 if opts["extended"]:
1959 d = util.parsedate(date, util.extendeddateformats) 1963 d = util.parsedate(date, util.extendeddateformats)
1960 else: 1964 else:
2102 2106
2103 @command('debugindex', 2107 @command('debugindex',
2104 [('c', 'changelog', False, _('open changelog')), 2108 [('c', 'changelog', False, _('open changelog')),
2105 ('m', 'manifest', False, _('open manifest')), 2109 ('m', 'manifest', False, _('open manifest')),
2106 ('f', 'format', 0, _('revlog format'), _('FORMAT'))], 2110 ('f', 'format', 0, _('revlog format'), _('FORMAT'))],
2107 _('[-f FORMAT] -c|-m|FILE')) 2111 _('[-f FORMAT] -c|-m|FILE'),
2112 optionalrepo=True)
2108 def debugindex(ui, repo, file_=None, **opts): 2113 def debugindex(ui, repo, file_=None, **opts):
2109 """dump the contents of an index file""" 2114 """dump the contents of an index file"""
2110 r = cmdutil.openrevlog(repo, 'debugindex', file_, opts) 2115 r = cmdutil.openrevlog(repo, 'debugindex', file_, opts)
2111 format = opts.get('format', 0) 2116 format = opts.get('format', 0)
2112 if format not in (0, 1): 2117 if format not in (0, 1):
2144 pr = r.parentrevs(i) 2149 pr = r.parentrevs(i)
2145 ui.write("% 6d %04x % 8d % 8d % 8d % 6d % 6d % 6d % 6d %s\n" % ( 2150 ui.write("% 6d %04x % 8d % 8d % 8d % 6d % 6d % 6d % 6d %s\n" % (
2146 i, r.flags(i), r.start(i), r.length(i), r.rawsize(i), 2151 i, r.flags(i), r.start(i), r.length(i), r.rawsize(i),
2147 base, r.linkrev(i), pr[0], pr[1], short(node))) 2152 base, r.linkrev(i), pr[0], pr[1], short(node)))
2148 2153
2149 @command('debugindexdot', [], _('FILE')) 2154 @command('debugindexdot', [], _('FILE'), optionalrepo=True)
2150 def debugindexdot(ui, repo, file_): 2155 def debugindexdot(ui, repo, file_):
2151 """dump an index DAG as a graphviz dot file""" 2156 """dump an index DAG as a graphviz dot file"""
2152 r = None 2157 r = None
2153 if repo: 2158 if repo:
2154 filelog = repo.file(file_) 2159 filelog = repo.file(file_)
2483 2488
2484 @command('debugrevlog', 2489 @command('debugrevlog',
2485 [('c', 'changelog', False, _('open changelog')), 2490 [('c', 'changelog', False, _('open changelog')),
2486 ('m', 'manifest', False, _('open manifest')), 2491 ('m', 'manifest', False, _('open manifest')),
2487 ('d', 'dump', False, _('dump index data'))], 2492 ('d', 'dump', False, _('dump index data'))],
2488 _('-c|-m|FILE')) 2493 _('-c|-m|FILE'),
2494 optionalrepo=True)
2489 def debugrevlog(ui, repo, file_=None, **opts): 2495 def debugrevlog(ui, repo, file_=None, **opts):
2490 """show data and statistics about a revlog""" 2496 """show data and statistics about a revlog"""
2491 r = cmdutil.openrevlog(repo, 'debugrevlog', file_, opts) 2497 r = cmdutil.openrevlog(repo, 'debugrevlog', file_, opts)
2492 2498
2493 if opts.get("dump"): 2499 if opts.get("dump"):
3575 ('i', 'id', None, _('show global revision id')), 3581 ('i', 'id', None, _('show global revision id')),
3576 ('b', 'branch', None, _('show branch')), 3582 ('b', 'branch', None, _('show branch')),
3577 ('t', 'tags', None, _('show tags')), 3583 ('t', 'tags', None, _('show tags')),
3578 ('B', 'bookmarks', None, _('show bookmarks')), 3584 ('B', 'bookmarks', None, _('show bookmarks')),
3579 ] + remoteopts, 3585 ] + remoteopts,
3580 _('[-nibtB] [-r REV] [SOURCE]')) 3586 _('[-nibtB] [-r REV] [SOURCE]'),
3587 optionalrepo=True)
3581 def identify(ui, repo, source=None, rev=None, 3588 def identify(ui, repo, source=None, rev=None,
3582 num=None, id=None, branch=None, tags=None, bookmarks=None, **opts): 3589 num=None, id=None, branch=None, tags=None, bookmarks=None, **opts):
3583 """identify the working copy or specified revision 3590 """identify the working copy or specified revision
3584 3591
3585 Print a summary identifying the repository state at REV using one or 3592 Print a summary identifying the repository state at REV using one or
4439 for n in p: 4446 for n in p:
4440 if n != nullid: 4447 if n != nullid:
4441 displayer.show(repo[n]) 4448 displayer.show(repo[n])
4442 displayer.close() 4449 displayer.close()
4443 4450
4444 @command('paths', [], _('[NAME]')) 4451 @command('paths', [], _('[NAME]'), optionalrepo=True)
4445 def paths(ui, repo, search=None): 4452 def paths(ui, repo, search=None):
4446 """show aliases for remote repositories 4453 """show aliases for remote repositories
4447 4454
4448 Show definition of symbolic path name NAME. If no name is given, 4455 Show definition of symbolic path name NAME. If no name is given,
4449 show definition of all available names. 4456 show definition of all available names.
5191 ('', 'cmdserver', '', _('for remote clients'), _('MODE')), 5198 ('', 'cmdserver', '', _('for remote clients'), _('MODE')),
5192 ('t', 'templates', '', _('web templates to use'), _('TEMPLATE')), 5199 ('t', 'templates', '', _('web templates to use'), _('TEMPLATE')),
5193 ('', 'style', '', _('template style to use'), _('STYLE')), 5200 ('', 'style', '', _('template style to use'), _('STYLE')),
5194 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4')), 5201 ('6', 'ipv6', None, _('use IPv6 in addition to IPv4')),
5195 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))], 5202 ('', 'certificate', '', _('SSL certificate file'), _('FILE'))],
5196 _('[OPTION]...')) 5203 _('[OPTION]...'),
5204 optionalrepo=True)
5197 def serve(ui, repo, **opts): 5205 def serve(ui, repo, **opts):
5198 """start stand-alone webserver 5206 """start stand-alone webserver
5199 5207
5200 Start a local HTTP repository browser and pull server. You can use 5208 Start a local HTTP repository browser and pull server. You can use
5201 this for ad-hoc sharing and browsing of repositories. It is 5209 this for ad-hoc sharing and browsing of repositories. It is