##// END OF EJS Templates
let commands that show changesets use templates....
Vadim Gelfer -
r1907:77188850 default
parent child Browse files
Show More
@@ -0,0 +1,4 b''
1 template = '{rev}{parents} {node|short} {date|isodate} {author|user}\n {desc|firstline|strip}\n\n'
2 start_parents = ':'
3 parent = '{rev},'
4 last_parent = '{rev}'
@@ -0,0 +1,10 b''
1 template = 'changeset: {rev}:{node}\n{tags}{parents}{manifest}user: {author}\ndate: {date|date}\nfiles: {files}\n{file_adds}{file_dels}description:\n{desc|strip}\n\n'
2 start_file_adds = 'files+: '
3 file_add = ' {file_add}'
4 end_file_adds = '\n'
5 start_file_dels = 'files-: '
6 file_del = ' {file_del}'
7 end_file_dels = '\n'
8 parent = 'parent: {rev}:{node}\n'
9 manifest = 'manifest: {rev}:{node}\n'
10 tag = 'tag: {tag}\n'
@@ -294,6 +294,12 b' heads::'
294 changesets. They are where development generally takes place and
294 changesets. They are where development generally takes place and
295 are the usual targets for update and merge operations.
295 are the usual targets for update and merge operations.
296
296
297 options:
298 -b, --branches show branches
299 --map-file <file> display using template map file
300 -r, --rev <rev> show only heads which are descendants of rev
301 -t, --template <tpl> display using template
302
297 identify::
303 identify::
298 Print a short summary of the current state of the repo.
304 Print a short summary of the current state of the repo.
299
305
@@ -331,7 +337,11 b' incoming [-p] [source]::'
331 Currently only local repositories are supported.
337 Currently only local repositories are supported.
332
338
333 options:
339 options:
340 -M, --no-merges do not show merges
341 --map-file <file> display using template map file
342 -n, --newest-first show newest records first
334 -p, --patch show patch
343 -p, --patch show patch
344 -t, --template <tpl> display using template
335
345
336 aliases: in
346 aliases: in
337
347
@@ -379,10 +389,12 b' log [-r revision ...] [-p] [files]::'
379 -b, --branch show branches
389 -b, --branch show branches
380 -k, --keyword <str> search for keywords
390 -k, --keyword <str> search for keywords
381 -l, --limit <num> print no more than this many changes
391 -l, --limit <num> print no more than this many changes
392 --map-file <file> display using template map file
382 -M, --no-merges do not show merges
393 -M, --no-merges do not show merges
383 -m, --only-merges only show merges
394 -m, --only-merges only show merges
384 -r, --rev <A> show the specified revision or range
395 -r, --rev <A> show the specified revision or range
385 -p, --patch show patch
396 -p, --patch show patch
397 -t, --template <tpl> display using template
386
398
387 aliases: history
399 aliases: history
388
400
@@ -400,13 +412,22 b' outgoing [-p] [dest]::'
400 See pull for valid source format details.
412 See pull for valid source format details.
401
413
402 options:
414 options:
415 -M, --no-merges do not show merges
416 --map-file <file> display using template map file
403 -p, --patch show patch
417 -p, --patch show patch
418 -n, --newest-first show newest records first
419 -t, --template <tpl> display using template
404
420
405 aliases: out
421 aliases: out
406
422
407 parents::
423 parents::
408 Print the working directory's parent revisions.
424 Print the working directory's parent revisions.
409
425
426 options:
427 -b, --branches show branches
428 --map-file <file> display using template map file
429 -t, --template <tpl> display using template
430
410 paths [NAME]::
431 paths [NAME]::
411 Show definition of symbolic path name NAME. If no name is given, show
432 Show definition of symbolic path name NAME. If no name is given, show
412 definition of available names.
433 definition of available names.
@@ -613,7 +634,10 b' tip [-p]::'
613 Show the tip revision.
634 Show the tip revision.
614
635
615 options:
636 options:
616 -p, --patch show patch
637 -b, --branches show branches
638 --map-file <file> display using template map file
639 -p, --patch show patch
640 -t, --template <tpl> display using template
617
641
618 unbundle <file>::
642 unbundle <file>::
619 (EXPERIMENTAL)
643 (EXPERIMENTAL)
@@ -238,6 +238,10 b' ui::'
238 The editor to use during a commit. Default is $EDITOR or "vi".
238 The editor to use during a commit. Default is $EDITOR or "vi".
239 interactive;;
239 interactive;;
240 Allow to prompt the user. True or False. Default is True.
240 Allow to prompt the user. True or False. Default is True.
241 logtemplate;;
242 Template string for commands that print changesets.
243 logmap;;
244 Template map file for commands that print changesets.
241 merge;;
245 merge;;
242 The conflict resolution program to use during a manual merge.
246 The conflict resolution program to use during a manual merge.
243 Default is "hgmerge".
247 Default is "hgmerge".
@@ -9,7 +9,7 b' from demandload import demandload'
9 from node import *
9 from node import *
10 from i18n import gettext as _
10 from i18n import gettext as _
11 demandload(globals(), "os re sys signal shutil imp urllib pdb")
11 demandload(globals(), "os re sys signal shutil imp urllib pdb")
12 demandload(globals(), "fancyopts ui hg util lock revlog")
12 demandload(globals(), "fancyopts ui hg util lock revlog templater")
13 demandload(globals(), "fnmatch hgweb mdiff random signal time traceback")
13 demandload(globals(), "fnmatch hgweb mdiff random signal time traceback")
14 demandload(globals(), "errno socket version struct atexit sets bz2")
14 demandload(globals(), "errno socket version struct atexit sets bz2")
15
15
@@ -337,63 +337,219 b' def trimuser(ui, name, rev, revcache):'
337 user = revcache[rev] = ui.shortuser(name)
337 user = revcache[rev] = ui.shortuser(name)
338 return user
338 return user
339
339
340 def show_changeset(ui, repo, rev=0, changenode=None, brinfo=None):
340 class changeset_templater(object):
341 """show a single changeset or file revision"""
341 def __init__(self, ui, repo, mapfile):
342 log = repo.changelog
342 self.t = templater.templater(mapfile, templater.common_filters)
343 if changenode is None:
343 self.ui = ui
344 changenode = log.node(rev)
344 self.repo = repo
345 elif not rev:
345
346 rev = log.rev(changenode)
346 def use_template(self, t):
347
347 self.t.cache['template'] = t
348 if ui.quiet:
348
349 ui.write("%d:%s\n" % (rev, short(changenode)))
349 def write(self, thing):
350 return
350 for t in thing:
351
351 if hasattr(t, '__iter__'):
352 changes = log.read(changenode)
352 self.write(t)
353 date = util.datestr(changes[2])
353 else:
354
354 self.ui.write(t)
355 parents = [(log.rev(p), ui.verbose and hex(p) or short(p))
355
356 for p in log.parents(changenode)
356 def show(self, rev=0, changenode=None, brinfo=None):
357 if ui.debugflag or p != nullid]
357 """show a single changeset or file revision"""
358 if not ui.debugflag and len(parents) == 1 and parents[0][0] == rev-1:
358 log = self.repo.changelog
359 parents = []
359 if changenode is None:
360
360 changenode = log.node(rev)
361 if ui.verbose:
361 elif not rev:
362 ui.write(_("changeset: %d:%s\n") % (rev, hex(changenode)))
362 rev = log.rev(changenode)
363
364 changes = log.read(changenode)
365
366 def showlist(name, values, plural=None, **args):
367 if plural: names = plural
368 else: names = name + 's'
369 if not values:
370 noname = 'no_' + names
371 if noname in self.t:
372 yield self.t(noname, **args)
373 return
374 vargs = args.copy()
375 if name not in self.t:
376 yield ' '.join(values)
377 return
378 startname = 'start_' + names
379 if startname in self.t:
380 yield self.t(startname, **args)
381 def one(v):
382 try:
383 vargs.update(v)
384 except ValueError:
385 vargs.update([(name, v)])
386 return self.t(name, **vargs)
387 lastname = 'last_' + name
388 if lastname in self.t:
389 last = values.pop()
390 else:
391 last = None
392 for v in values:
393 yield one(v)
394 if last is not None:
395 name = lastname
396 yield one(last)
397 endname = 'end_' + names
398 if endname in self.t:
399 yield self.t(endname, **args)
400
401 if brinfo:
402 def showbranches(**args):
403 if changenode in brinfo:
404 for x in showlist('branch', brinfo[changenode],
405 plural='branches', **args):
406 yield x
407 else:
408 showbranches = ''
409
410 def showmanifest(**args):
411 args = args.copy()
412 args.update(rev=self.repo.manifest.rev(changes[0]),
413 node=hex(changes[0]))
414 yield self.t('manifest', **args)
415
416 def showparents(**args):
417 parents = [[('rev', log.rev(p)), ('node', hex(p))]
418 for p in log.parents(changenode)
419 if self.ui.debugflag or p != nullid]
420 if (not self.ui.debugflag and len(parents) == 1 and
421 parents[0][0][1] == rev - 1):
422 return
423 for x in showlist('parent', parents, **args):
424 yield x
425
426 def showtags(**args):
427 for x in showlist('tag', self.repo.nodetags(changenode), **args):
428 yield x
429
430 if self.ui.debugflag:
431 files = self.repo.changes(log.parents(changenode)[0], changenode)
432 def showfiles(**args):
433 for x in showlist('file', files[0], **args): yield x
434 def showadds(**args):
435 for x in showlist('file_add', files[1], **args): yield x
436 def showdels(**args):
437 for x in showlist('file_del', files[2], **args): yield x
438 else:
439 def showfiles(**args):
440 for x in showlist('file', changes[3], **args): yield x
441 showadds = ''
442 showdels = ''
443
444 props = {
445 'author': changes[1],
446 'branches': showbranches,
447 'date': changes[2],
448 'desc': changes[4],
449 'file_adds': showadds,
450 'file_dels': showdels,
451 'files': showfiles,
452 'manifest': showmanifest,
453 'node': hex(changenode),
454 'parents': showparents,
455 'rev': rev,
456 'tags': showtags,
457 }
458
459 try:
460 self.write(self.t('template', **props))
461 except KeyError, inst:
462 raise util.Abort(_("%s: no key named '%s'") % (self.t.mapfile,
463 inst.args[0]))
464 except SyntaxError, inst:
465 raise util.Abort(_('%s: %s') % (self.t.mapfile, inst.args[0]))
466
467 class changeset_printer(object):
468 def __init__(self, ui, repo):
469 self.ui = ui
470 self.repo = repo
471
472 def show(self, rev=0, changenode=None, brinfo=None):
473 """show a single changeset or file revision"""
474 log = self.repo.changelog
475 if changenode is None:
476 changenode = log.node(rev)
477 elif not rev:
478 rev = log.rev(changenode)
479
480 if self.ui.quiet:
481 self.ui.write("%d:%s\n" % (rev, short(changenode)))
482 return
483
484 changes = log.read(changenode)
485 date = util.datestr(changes[2])
486
487 parents = [(log.rev(p), self.ui.verbose and hex(p) or short(p))
488 for p in log.parents(changenode)
489 if self.ui.debugflag or p != nullid]
490 if (not self.ui.debugflag and len(parents) == 1 and
491 parents[0][0] == rev-1):
492 parents = []
493
494 if self.ui.verbose:
495 self.ui.write(_("changeset: %d:%s\n") % (rev, hex(changenode)))
496 else:
497 self.ui.write(_("changeset: %d:%s\n") % (rev, short(changenode)))
498
499 for tag in self.repo.nodetags(changenode):
500 self.ui.status(_("tag: %s\n") % tag)
501 for parent in parents:
502 self.ui.write(_("parent: %d:%s\n") % parent)
503
504 if brinfo and changenode in brinfo:
505 br = brinfo[changenode]
506 self.ui.write(_("branch: %s\n") % " ".join(br))
507
508 self.ui.debug(_("manifest: %d:%s\n") %
509 (self.repo.manifest.rev(changes[0]), hex(changes[0])))
510 self.ui.status(_("user: %s\n") % changes[1])
511 self.ui.status(_("date: %s\n") % date)
512
513 if self.ui.debugflag:
514 files = self.repo.changes(log.parents(changenode)[0], changenode)
515 for key, value in zip([_("files:"), _("files+:"), _("files-:")],
516 files):
517 if value:
518 self.ui.note("%-12s %s\n" % (key, " ".join(value)))
519 else:
520 self.ui.note(_("files: %s\n") % " ".join(changes[3]))
521
522 description = changes[4].strip()
523 if description:
524 if self.ui.verbose:
525 self.ui.status(_("description:\n"))
526 self.ui.status(description)
527 self.ui.status("\n\n")
528 else:
529 self.ui.status(_("summary: %s\n") %
530 description.splitlines()[0])
531 self.ui.status("\n")
532
533 def show_changeset(ui, repo, opts):
534 tmpl = opts.get('template')
535 if tmpl:
536 tmpl = templater.parsestring(tmpl, quoted=False)
363 else:
537 else:
364 ui.write(_("changeset: %d:%s\n") % (rev, short(changenode)))
538 tmpl = ui.config('ui', 'logtemplate')
365
539 if tmpl: tmpl = templater.parsestring(tmpl)
366 for tag in repo.nodetags(changenode):
540 mapfile = opts.get('map_file') or ui.config('ui', 'logmap')
367 ui.status(_("tag: %s\n") % tag)
541 if tmpl or mapfile:
368 for parent in parents:
542 if mapfile:
369 ui.write(_("parent: %d:%s\n") % parent)
543 if not os.path.isfile(mapfile):
370
544 mapname = templater.templatepath(mapfile)
371 if brinfo and changenode in brinfo:
545 if mapname: mapfile = mapname
372 br = brinfo[changenode]
546 try:
373 ui.write(_("branch: %s\n") % " ".join(br))
547 t = changeset_templater(ui, repo, mapfile)
374
548 except SyntaxError, inst:
375 ui.debug(_("manifest: %d:%s\n") % (repo.manifest.rev(changes[0]),
549 raise util.Abort(inst.args[0])
376 hex(changes[0])))
550 if tmpl: t.use_template(tmpl)
377 ui.status(_("user: %s\n") % changes[1])
551 return t
378 ui.status(_("date: %s\n") % date)
552 return changeset_printer(ui, repo)
379
380 if ui.debugflag:
381 files = repo.changes(log.parents(changenode)[0], changenode)
382 for key, value in zip([_("files:"), _("files+:"), _("files-:")], files):
383 if value:
384 ui.note("%-12s %s\n" % (key, " ".join(value)))
385 else:
386 ui.note(_("files: %s\n") % " ".join(changes[3]))
387
388 description = changes[4].strip()
389 if description:
390 if ui.verbose:
391 ui.status(_("description:\n"))
392 ui.status(description)
393 ui.status("\n\n")
394 else:
395 ui.status(_("summary: %s\n") % description.splitlines()[0])
396 ui.status("\n")
397
553
398 def show_version(ui):
554 def show_version(ui):
399 """output version and copyright information"""
555 """output version and copyright information"""
@@ -1409,8 +1565,9 b' def heads(ui, repo, **opts):'
1409 br = None
1565 br = None
1410 if opts['branches']:
1566 if opts['branches']:
1411 br = repo.branchlookup(heads)
1567 br = repo.branchlookup(heads)
1568 displayer = show_changeset(ui, repo, opts)
1412 for n in heads:
1569 for n in heads:
1413 show_changeset(ui, repo, changenode=n, brinfo=br)
1570 displayer.show(changenode=n, brinfo=br)
1414
1571
1415 def identify(ui, repo):
1572 def identify(ui, repo):
1416 """print information about the working copy
1573 """print information about the working copy
@@ -1537,11 +1694,12 b' def incoming(ui, repo, source="default",'
1537 o = other.changelog.nodesbetween(o)[0]
1694 o = other.changelog.nodesbetween(o)[0]
1538 if opts['newest_first']:
1695 if opts['newest_first']:
1539 o.reverse()
1696 o.reverse()
1697 displayer = show_changeset(ui, other, opts)
1540 for n in o:
1698 for n in o:
1541 parents = [p for p in other.changelog.parents(n) if p != nullid]
1699 parents = [p for p in other.changelog.parents(n) if p != nullid]
1542 if opts['no_merges'] and len(parents) == 2:
1700 if opts['no_merges'] and len(parents) == 2:
1543 continue
1701 continue
1544 show_changeset(ui, other, changenode=n)
1702 displayer.show(changenode=n)
1545 if opts['patch']:
1703 if opts['patch']:
1546 prev = (parents and parents[0]) or nullid
1704 prev = (parents and parents[0]) or nullid
1547 dodiff(ui, ui, other, prev, n)
1705 dodiff(ui, ui, other, prev, n)
@@ -1638,9 +1796,11 b' def log(ui, repo, *pats, **opts):'
1638 limit = sys.maxint
1796 limit = sys.maxint
1639 count = 0
1797 count = 0
1640
1798
1799 displayer = show_changeset(ui, repo, opts)
1641 for st, rev, fns in changeiter:
1800 for st, rev, fns in changeiter:
1642 if st == 'window':
1801 if st == 'window':
1643 du = dui(ui)
1802 du = dui(ui)
1803 displayer.ui = du
1644 elif st == 'add':
1804 elif st == 'add':
1645 du.bump(rev)
1805 du.bump(rev)
1646 changenode = repo.changelog.node(rev)
1806 changenode = repo.changelog.node(rev)
@@ -1667,7 +1827,7 b' def log(ui, repo, *pats, **opts):'
1667 if opts['branches']:
1827 if opts['branches']:
1668 br = repo.branchlookup([repo.changelog.node(rev)])
1828 br = repo.branchlookup([repo.changelog.node(rev)])
1669
1829
1670 show_changeset(du, repo, rev, brinfo=br)
1830 displayer.show(rev, brinfo=br)
1671 if opts['patch']:
1831 if opts['patch']:
1672 prev = (parents and parents[0]) or nullid
1832 prev = (parents and parents[0]) or nullid
1673 dodiff(du, du, repo, prev, changenode, match=matchfn)
1833 dodiff(du, du, repo, prev, changenode, match=matchfn)
@@ -1718,17 +1878,18 b' def outgoing(ui, repo, dest="default-pus'
1718 o = repo.changelog.nodesbetween(o)[0]
1878 o = repo.changelog.nodesbetween(o)[0]
1719 if opts['newest_first']:
1879 if opts['newest_first']:
1720 o.reverse()
1880 o.reverse()
1881 displayer = show_changeset(ui, repo, opts)
1721 for n in o:
1882 for n in o:
1722 parents = [p for p in repo.changelog.parents(n) if p != nullid]
1883 parents = [p for p in repo.changelog.parents(n) if p != nullid]
1723 if opts['no_merges'] and len(parents) == 2:
1884 if opts['no_merges'] and len(parents) == 2:
1724 continue
1885 continue
1725 show_changeset(ui, repo, changenode=n)
1886 displayer.show(changenode=n)
1726 if opts['patch']:
1887 if opts['patch']:
1727 prev = (parents and parents[0]) or nullid
1888 prev = (parents and parents[0]) or nullid
1728 dodiff(ui, ui, repo, prev, n)
1889 dodiff(ui, ui, repo, prev, n)
1729 ui.write("\n")
1890 ui.write("\n")
1730
1891
1731 def parents(ui, repo, rev=None, branches=None):
1892 def parents(ui, repo, rev=None, branches=None, **opts):
1732 """show the parents of the working dir or revision
1893 """show the parents of the working dir or revision
1733
1894
1734 Print the working directory's parent revisions.
1895 Print the working directory's parent revisions.
@@ -1741,9 +1902,10 b' def parents(ui, repo, rev=None, branches'
1741 br = None
1902 br = None
1742 if branches is not None:
1903 if branches is not None:
1743 br = repo.branchlookup(p)
1904 br = repo.branchlookup(p)
1905 displayer = show_changeset(ui, repo, opts)
1744 for n in p:
1906 for n in p:
1745 if n != nullid:
1907 if n != nullid:
1746 show_changeset(ui, repo, changenode=n, brinfo=br)
1908 displayer.show(changenode=n, brinfo=br)
1747
1909
1748 def paths(ui, search=None):
1910 def paths(ui, search=None):
1749 """show definition of symbolic path names
1911 """show definition of symbolic path names
@@ -2246,7 +2408,7 b' def tip(ui, repo, **opts):'
2246 br = None
2408 br = None
2247 if opts['branches']:
2409 if opts['branches']:
2248 br = repo.branchlookup([n])
2410 br = repo.branchlookup([n])
2249 show_changeset(ui, repo, changenode=n, brinfo=br)
2411 show_changeset(ui, repo, opts).show(changenode=n, brinfo=br)
2250 if opts['patch']:
2412 if opts['patch']:
2251 dodiff(ui, ui, repo, repo.changelog.parents(n)[0], n)
2413 dodiff(ui, ui, repo, repo.changelog.parents(n)[0], n)
2252
2414
@@ -2291,7 +2453,7 b' def undo(ui, repo):'
2291 repo.undo()
2453 repo.undo()
2292
2454
2293 def update(ui, repo, node=None, merge=False, clean=False, force=None,
2455 def update(ui, repo, node=None, merge=False, clean=False, force=None,
2294 branch=None):
2456 branch=None, **opts):
2295 """update or merge working directory
2457 """update or merge working directory
2296
2458
2297 Update the working directory to the specified revision.
2459 Update the working directory to the specified revision.
@@ -2318,7 +2480,7 b' def update(ui, repo, node=None, merge=Fa'
2318 if len(found) > 1:
2480 if len(found) > 1:
2319 ui.warn(_("Found multiple heads for %s\n") % branch)
2481 ui.warn(_("Found multiple heads for %s\n") % branch)
2320 for x in found:
2482 for x in found:
2321 show_changeset(ui, repo, changenode=x, brinfo=br)
2483 show_changeset(ui, repo, opts).show(changenode=x, brinfo=br)
2322 return 1
2484 return 1
2323 if len(found) == 1:
2485 if len(found) == 1:
2324 node = found[0]
2486 node = found[0]
@@ -2462,7 +2624,9 b' table = {'
2462 "heads":
2624 "heads":
2463 (heads,
2625 (heads,
2464 [('b', 'branches', None, _('show branches')),
2626 [('b', 'branches', None, _('show branches')),
2465 ('r', 'rev', '', _('show only heads which are descendants of rev'))],
2627 ('', 'map-file', '', _('display using template map file')),
2628 ('r', 'rev', '', _('show only heads which are descendants of rev')),
2629 ('t', 'template', '', _('display with template'))],
2466 _('hg heads [-b] [-r <rev>]')),
2630 _('hg heads [-b] [-r <rev>]')),
2467 "help": (help_, [], _('hg help [COMMAND]')),
2631 "help": (help_, [], _('hg help [COMMAND]')),
2468 "identify|id": (identify, [], _('hg identify')),
2632 "identify|id": (identify, [], _('hg identify')),
@@ -2477,8 +2641,10 b' table = {'
2477 _('hg import [-f] [-p NUM] [-b BASE] PATCH...')),
2641 _('hg import [-f] [-p NUM] [-b BASE] PATCH...')),
2478 "incoming|in": (incoming,
2642 "incoming|in": (incoming,
2479 [('M', 'no-merges', None, _('do not show merges')),
2643 [('M', 'no-merges', None, _('do not show merges')),
2644 ('', 'map-file', '', _('display using template map file')),
2645 ('n', 'newest-first', None, _('show newest record first')),
2480 ('p', 'patch', None, _('show patch')),
2646 ('p', 'patch', None, _('show patch')),
2481 ('n', 'newest-first', None, _('show newest record first'))],
2647 ('t', 'template', '', _('display with template'))],
2482 _('hg incoming [-p] [-n] [-M] [SOURCE]')),
2648 _('hg incoming [-p] [-n] [-M] [SOURCE]')),
2483 "^init": (init, [], _('hg init [DEST]')),
2649 "^init": (init, [], _('hg init [DEST]')),
2484 "locate":
2650 "locate":
@@ -2500,18 +2666,24 b' table = {'
2500 ('l', 'limit', '', _('limit number of changes displayed')),
2666 ('l', 'limit', '', _('limit number of changes displayed')),
2501 ('r', 'rev', [], _('show the specified revision or range')),
2667 ('r', 'rev', [], _('show the specified revision or range')),
2502 ('M', 'no-merges', None, _('do not show merges')),
2668 ('M', 'no-merges', None, _('do not show merges')),
2669 ('', 'map-file', '', _('display using template map file')),
2503 ('m', 'only-merges', None, _('show only merges')),
2670 ('m', 'only-merges', None, _('show only merges')),
2504 ('p', 'patch', None, _('show patch'))],
2671 ('p', 'patch', None, _('show patch')),
2672 ('t', 'template', '', _('display with template'))],
2505 _('hg log [-I] [-X] [-r REV]... [-p] [FILE]')),
2673 _('hg log [-I] [-X] [-r REV]... [-p] [FILE]')),
2506 "manifest": (manifest, [], _('hg manifest [REV]')),
2674 "manifest": (manifest, [], _('hg manifest [REV]')),
2507 "outgoing|out": (outgoing,
2675 "outgoing|out": (outgoing,
2508 [('M', 'no-merges', None, _('do not show merges')),
2676 [('M', 'no-merges', None, _('do not show merges')),
2509 ('p', 'patch', None, _('show patch')),
2677 ('p', 'patch', None, _('show patch')),
2510 ('n', 'newest-first', None, _('show newest record first'))],
2678 ('', 'map-file', '', _('display using template map file')),
2679 ('n', 'newest-first', None, _('show newest record first')),
2680 ('t', 'template', '', _('display with template'))],
2511 _('hg outgoing [-p] [-n] [-M] [DEST]')),
2681 _('hg outgoing [-p] [-n] [-M] [DEST]')),
2512 "^parents":
2682 "^parents":
2513 (parents,
2683 (parents,
2514 [('b', 'branches', None, _('show branches'))],
2684 [('b', 'branches', None, _('show branches')),
2685 ('', 'map-file', '', _('display using template map file')),
2686 ('t', 'template', '', _('display with template'))],
2515 _('hg parents [-b] [REV]')),
2687 _('hg parents [-b] [REV]')),
2516 "paths": (paths, [], _('hg paths [NAME]')),
2688 "paths": (paths, [], _('hg paths [NAME]')),
2517 "^pull":
2689 "^pull":
@@ -2602,7 +2774,9 b' table = {'
2602 "tip":
2774 "tip":
2603 (tip,
2775 (tip,
2604 [('b', 'branches', None, _('show branches')),
2776 [('b', 'branches', None, _('show branches')),
2605 ('p', 'patch', None, _('show patch'))],
2777 ('', 'map-file', '', _('display using template map file')),
2778 ('p', 'patch', None, _('show patch')),
2779 ('t', 'template', '', _('display with template'))],
2606 _('hg [-b] [-p] tip')),
2780 _('hg [-b] [-p] tip')),
2607 "unbundle":
2781 "unbundle":
2608 (unbundle,
2782 (unbundle,
@@ -2613,9 +2787,11 b' table = {'
2613 "^update|up|checkout|co":
2787 "^update|up|checkout|co":
2614 (update,
2788 (update,
2615 [('b', 'branch', '', _('checkout the head of a specific branch')),
2789 [('b', 'branch', '', _('checkout the head of a specific branch')),
2790 ('', 'map-file', '', _('display using template map file')),
2616 ('m', 'merge', None, _('allow merging of branches')),
2791 ('m', 'merge', None, _('allow merging of branches')),
2617 ('C', 'clean', None, _('overwrite locally modified files')),
2792 ('C', 'clean', None, _('overwrite locally modified files')),
2618 ('f', 'force', None, _('force a merge with outstanding changes'))],
2793 ('f', 'force', None, _('force a merge with outstanding changes')),
2794 ('t', 'template', '', _('display with template'))],
2619 _('hg update [-b TAG] [-m] [-C] [-f] [REV]')),
2795 _('hg update [-b TAG] [-m] [-C] [-f] [REV]')),
2620 "verify": (verify, [], _('hg verify')),
2796 "verify": (verify, [], _('hg verify')),
2621 "version": (show_version, [], _('hg version')),
2797 "version": (show_version, [], _('hg version')),
General Comments 0
You need to be logged in to leave comments. Login now