Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 9157:9261667e9b82
commands: use minirst parser when displaying help
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Thu, 16 Jul 2009 23:25:26 +0200 |
parents | 63cfacb7917e |
children | 07d127e771a1 |
comparison
equal
deleted
inserted
replaced
9156:c9c7e8cdac9c | 9157:9261667e9b82 |
---|---|
12 import hg, util, revlog, bundlerepo, extensions, copies, context, error | 12 import hg, util, revlog, bundlerepo, extensions, copies, context, error |
13 import patch, help, mdiff, url, encoding | 13 import patch, help, mdiff, url, encoding |
14 import archival, changegroup, cmdutil, sshserver, hbisect | 14 import archival, changegroup, cmdutil, sshserver, hbisect |
15 from hgweb import server | 15 from hgweb import server |
16 import merge as merge_ | 16 import merge as merge_ |
17 import minirst | |
17 | 18 |
18 # Commands start here, listed alphabetically | 19 # Commands start here, listed alphabetically |
19 | 20 |
20 def add(ui, repo, *pats, **opts): | 21 def add(ui, repo, *pats, **opts): |
21 """add the specified files on the next commit | 22 """add the specified files on the next commit |
131 '''create an unversioned archive of a repository revision | 132 '''create an unversioned archive of a repository revision |
132 | 133 |
133 By default, the revision used is the parent of the working directory; use | 134 By default, the revision used is the parent of the working directory; use |
134 -r/--rev to specify a different revision. | 135 -r/--rev to specify a different revision. |
135 | 136 |
136 To specify the type of archive to create, use -t/--type. Valid types are: | 137 To specify the type of archive to create, use -t/--type. Valid types are:: |
137 | 138 |
138 "files" (default): a directory full of files | 139 "files" (default): a directory full of files |
139 "tar": tar archive, uncompressed | 140 "tar": tar archive, uncompressed |
140 "tbz2": tar archive, compressed using bzip2 | 141 "tbz2": tar archive, compressed using bzip2 |
141 "tgz": tar archive, compressed using gzip | 142 "tgz": tar archive, compressed using gzip |
142 "uzip": zip archive, uncompressed | 143 "uzip": zip archive, uncompressed |
143 "zip": zip archive, compressed using deflate | 144 "zip": zip archive, compressed using deflate |
144 | 145 |
145 The exact name of the destination archive or directory is given using a | 146 The exact name of the destination archive or directory is given using a |
146 format string; see 'hg help export' for details. | 147 format string; see 'hg help export' for details. |
147 | 148 |
148 Each member added to an archive file has a directory prefix prepended. Use | 149 Each member added to an archive file has a directory prefix prepended. Use |
548 revision is given, the parent of the working directory is used, or tip if | 549 revision is given, the parent of the working directory is used, or tip if |
549 no revision is checked out. | 550 no revision is checked out. |
550 | 551 |
551 Output may be to a file, in which case the name of the file is given using | 552 Output may be to a file, in which case the name of the file is given using |
552 a format string. The formatting rules are the same as for the export | 553 a format string. The formatting rules are the same as for the export |
553 command, with the following additions: | 554 command, with the following additions:: |
554 | 555 |
555 %s basename of file being printed | 556 %s basename of file being printed |
556 %d dirname of file being printed, or '.' if in repository root | 557 %d dirname of file being printed, or '.' if in repository root |
557 %p root-relative path name of file being printed | 558 %p root-relative path name of file being printed |
558 """ | 559 """ |
559 ctx = repo[opts.get('rev')] | 560 ctx = repo[opts.get('rev')] |
560 err = 1 | 561 err = 1 |
561 m = cmdutil.match(repo, (file1,) + pats, opts) | 562 m = cmdutil.match(repo, (file1,) + pats, opts) |
562 for abs in ctx.walk(m): | 563 for abs in ctx.walk(m): |
598 repository data, not to the checked out files). Some filesystems, such as | 599 repository data, not to the checked out files). Some filesystems, such as |
599 AFS, implement hardlinking incorrectly, but do not report errors. In these | 600 AFS, implement hardlinking incorrectly, but do not report errors. In these |
600 cases, use the --pull option to avoid hardlinking. | 601 cases, use the --pull option to avoid hardlinking. |
601 | 602 |
602 In some cases, you can clone repositories and checked out files using full | 603 In some cases, you can clone repositories and checked out files using full |
603 hardlinks with | 604 hardlinks with :: |
604 | 605 |
605 $ cp -al REPO REPOCLONE | 606 $ cp -al REPO REPOCLONE |
606 | 607 |
607 This is the fastest way to clone, but it is not always safe. The operation | 608 This is the fastest way to clone, but it is not always safe. The operation |
608 is not atomic (making sure REPO is not modified during the operation is up | 609 is not atomic (making sure REPO is not modified during the operation is up |
1093 | 1094 |
1094 NOTE: export may generate unexpected diff output for merge changesets, as | 1095 NOTE: export may generate unexpected diff output for merge changesets, as |
1095 it will compare the merge changeset against its first parent only. | 1096 it will compare the merge changeset against its first parent only. |
1096 | 1097 |
1097 Output may be to a file, in which case the name of the file is given using | 1098 Output may be to a file, in which case the name of the file is given using |
1098 a format string. The formatting rules are as follows: | 1099 a format string. The formatting rules are as follows:: |
1099 | 1100 |
1100 %% literal "%" character | 1101 %% literal "%" character |
1101 %H changeset hash (40 bytes of hexadecimal) | 1102 %H changeset hash (40 bytes of hexadecimal) |
1102 %N number of patches being generated | 1103 %N number of patches being generated |
1103 %R changeset revision number | 1104 %R changeset revision number |
1104 %b basename of the exporting repository | 1105 %b basename of the exporting repository |
1105 %h short-form changeset hash (12 bytes of hexadecimal) | 1106 %h short-form changeset hash (12 bytes of hexadecimal) |
1106 %n zero-padded sequence number, starting at 1 | 1107 %n zero-padded sequence number, starting at 1 |
1107 %r zero-padded changeset revision number | 1108 %r zero-padded changeset revision number |
1108 | 1109 |
1109 Without the -a/--text option, export will avoid generating diffs of files | 1110 Without the -a/--text option, export will avoid generating diffs of files |
1110 it detects as binary. With -a, export will generate a diff anyway, | 1111 it detects as binary. With -a, export will generate a diff anyway, |
1111 probably with undesirable results. | 1112 probably with undesirable results. |
1112 | 1113 |
1395 With no arguments, print a list of commands with short help messages. | 1396 With no arguments, print a list of commands with short help messages. |
1396 | 1397 |
1397 Given a topic, extension, or command name, print help for that topic. | 1398 Given a topic, extension, or command name, print help for that topic. |
1398 """ | 1399 """ |
1399 option_lists = [] | 1400 option_lists = [] |
1401 textwidth = util.termwidth() - 2 | |
1400 | 1402 |
1401 def addglobalopts(aliases): | 1403 def addglobalopts(aliases): |
1402 if ui.verbose: | 1404 if ui.verbose: |
1403 option_lists.append((_("global options:"), globalopts)) | 1405 option_lists.append((_("global options:"), globalopts)) |
1404 if name == 'shortlist': | 1406 if name == 'shortlist': |
1447 doc = gettext(i[0].__doc__) | 1449 doc = gettext(i[0].__doc__) |
1448 if not doc: | 1450 if not doc: |
1449 doc = _("(no help text available)") | 1451 doc = _("(no help text available)") |
1450 if ui.quiet: | 1452 if ui.quiet: |
1451 doc = doc.splitlines()[0] | 1453 doc = doc.splitlines()[0] |
1452 ui.write("\n%s\n" % doc.rstrip()) | 1454 ui.write("\n%s\n" % minirst.format(doc, textwidth)) |
1453 | 1455 |
1454 if not ui.quiet: | 1456 if not ui.quiet: |
1455 # options | 1457 # options |
1456 if i[1]: | 1458 if i[1]: |
1457 option_lists.append((_("options:\n"), i[1])) | 1459 option_lists.append((_("options:\n"), i[1])) |
1496 else: | 1498 else: |
1497 ui.write(' %-*s %s\n' % (m, f, util.wrap(h[f], m + 4))) | 1499 ui.write(' %-*s %s\n' % (m, f, util.wrap(h[f], m + 4))) |
1498 | 1500 |
1499 if name != 'shortlist': | 1501 if name != 'shortlist': |
1500 exts, maxlength = extensions.enabled() | 1502 exts, maxlength = extensions.enabled() |
1501 ui.write(help.listexts(_('enabled extensions:'), exts, maxlength)) | 1503 text = help.listexts(_('enabled extensions:'), exts, maxlength) |
1504 if text: | |
1505 ui.write("\n%s\n" % minirst.format(text, textwidth)) | |
1502 | 1506 |
1503 if not ui.quiet: | 1507 if not ui.quiet: |
1504 addglobalopts(True) | 1508 addglobalopts(True) |
1505 | 1509 |
1506 def helptopic(name): | 1510 def helptopic(name): |
1514 if not doc: | 1518 if not doc: |
1515 doc = _("(no help text available)") | 1519 doc = _("(no help text available)") |
1516 if hasattr(doc, '__call__'): | 1520 if hasattr(doc, '__call__'): |
1517 doc = doc() | 1521 doc = doc() |
1518 | 1522 |
1519 ui.write("%s\n" % header) | 1523 ui.write("%s\n\n" % header) |
1520 ui.write("%s\n" % doc.rstrip()) | 1524 ui.write("%s\n" % minirst.format(doc, textwidth)) |
1521 | 1525 |
1522 def helpext(name): | 1526 def helpext(name): |
1523 try: | 1527 try: |
1524 mod = extensions.find(name) | 1528 mod = extensions.find(name) |
1525 except KeyError: | 1529 except KeyError: |
1526 raise error.UnknownCommand(name) | 1530 raise error.UnknownCommand(name) |
1527 | 1531 |
1528 doc = gettext(mod.__doc__) or _('no help text available') | 1532 doc = gettext(mod.__doc__) or _('no help text available') |
1529 doc = doc.splitlines() | 1533 head, tail = doc.split('\n', 1) |
1530 ui.write(_('%s extension - %s\n') % (name.split('.')[-1], doc[0])) | 1534 ui.write(_('%s extension - %s\n\n') % (name.split('.')[-1], head)) |
1531 for d in doc[1:]: | 1535 if tail: |
1532 ui.write(d, '\n') | 1536 ui.write(minirst.format(tail, textwidth)) |
1533 | 1537 ui.status('\n\n') |
1534 ui.status('\n') | |
1535 | 1538 |
1536 try: | 1539 try: |
1537 ct = mod.cmdtable | 1540 ct = mod.cmdtable |
1538 except AttributeError: | 1541 except AttributeError: |
1539 ct = {} | 1542 ct = {} |
2327 from the working directory. | 2330 from the working directory. |
2328 | 2331 |
2329 The following table details the behavior of remove for different file | 2332 The following table details the behavior of remove for different file |
2330 states (columns) and option combinations (rows). The file states are Added | 2333 states (columns) and option combinations (rows). The file states are Added |
2331 [A], Clean [C], Modified [M] and Missing [!] (as reported by hg status). | 2334 [A], Clean [C], Modified [M] and Missing [!] (as reported by hg status). |
2332 The actions are Warn, Remove (from branch) and Delete (from disk). | 2335 The actions are Warn, Remove (from branch) and Delete (from disk):: |
2333 | 2336 |
2334 A C M ! | 2337 A C M ! |
2335 none W RD W R | 2338 none W RD W R |
2336 -f R RD RD R | 2339 -f R RD RD R |
2337 -A W W W R | 2340 -A W W W R |
2338 -Af R R R R | 2341 -Af R R R R |
2339 | 2342 |
2340 This command schedules the files to be removed at the next commit. To undo | 2343 This command schedules the files to be removed at the next commit. To undo |
2341 a remove before that, see hg revert. | 2344 a remove before that, see hg revert. |
2342 """ | 2345 """ |
2343 | 2346 |
2408 | 2411 |
2409 This command also allows listing resolved files and manually indicating | 2412 This command also allows listing resolved files and manually indicating |
2410 whether or not files are resolved. All files must be marked as resolved | 2413 whether or not files are resolved. All files must be marked as resolved |
2411 before a commit is permitted. | 2414 before a commit is permitted. |
2412 | 2415 |
2413 The codes used to show the status of files are: | 2416 The codes used to show the status of files are:: |
2414 U = unresolved | 2417 |
2415 R = resolved | 2418 U = unresolved |
2419 R = resolved | |
2416 """ | 2420 """ |
2417 | 2421 |
2418 all, mark, unmark, show = [opts.get(o) for o in 'all mark unmark list'.split()] | 2422 all, mark, unmark, show = [opts.get(o) for o in 'all mark unmark list'.split()] |
2419 | 2423 |
2420 if (show and (mark or unmark)) or (mark and unmark): | 2424 if (show and (mark or unmark)) or (mark and unmark): |
2673 since that time. This command does not alter the working directory. | 2677 since that time. This command does not alter the working directory. |
2674 | 2678 |
2675 Transactions are used to encapsulate the effects of all commands that | 2679 Transactions are used to encapsulate the effects of all commands that |
2676 create new changesets or propagate existing changesets into a repository. | 2680 create new changesets or propagate existing changesets into a repository. |
2677 For example, the following commands are transactional, and their effects | 2681 For example, the following commands are transactional, and their effects |
2678 can be rolled back: | 2682 can be rolled back:: |
2679 | 2683 |
2680 commit | 2684 commit |
2681 import | 2685 import |
2682 pull | 2686 pull |
2683 push (with this repository as destination) | 2687 push (with this repository as destination) |
2781 parent. | 2785 parent. |
2782 | 2786 |
2783 If one revision is given, it is used as the base revision. If two | 2787 If one revision is given, it is used as the base revision. If two |
2784 revisions are given, the differences between them are shown. | 2788 revisions are given, the differences between them are shown. |
2785 | 2789 |
2786 The codes used to show the status of files are: | 2790 The codes used to show the status of files are:: |
2787 M = modified | 2791 |
2788 A = added | 2792 M = modified |
2789 R = removed | 2793 A = added |
2790 C = clean | 2794 R = removed |
2791 ! = missing (deleted by non-hg command, but still tracked) | 2795 C = clean |
2792 ? = not tracked | 2796 ! = missing (deleted by non-hg command, but still tracked) |
2793 I = ignored | 2797 ? = not tracked |
2794 = origin of the previous file listed as A (added) | 2798 I = ignored |
2799 = origin of the previous file listed as A (added) | |
2795 """ | 2800 """ |
2796 | 2801 |
2797 node1, node2 = cmdutil.revpair(repo, opts.get('rev')) | 2802 node1, node2 = cmdutil.revpair(repo, opts.get('rev')) |
2798 cwd = (pats and repo.getcwd()) or '' | 2803 cwd = (pats and repo.getcwd()) or '' |
2799 end = opts.get('print0') and '\0' or '\n' | 2804 end = opts.get('print0') and '\0' or '\n' |