[PATCH 3 of 6] commands: use minirst parser when displaying help

Martin Geisler mg at lazybytes.net
Fri Jul 10 06:54:34 CDT 2009


# HG changeset patch
# User Martin Geisler <mg at lazybytes.net>
# Date 1247224677 -7200
# Node ID dc341f71c2011763852ae855d2a88288b504e415
# Parent  860b4d1f8341f5042ccbe51e2a83d57127c7df71
commands: use minirst parser when displaying help

diff --git a/hgext/convert/__init__.py b/hgext/convert/__init__.py
--- a/hgext/convert/__init__.py
+++ b/hgext/convert/__init__.py
@@ -19,6 +19,7 @@
     """convert a foreign SCM repository to a Mercurial one.
 
     Accepted source formats [identifiers]:
+
     - Mercurial [hg]
     - CVS [cvs]
     - Darcs [darcs]
@@ -30,6 +31,7 @@
     - Perforce [p4]
 
     Accepted destination formats [identifiers]:
+
     - Mercurial [hg]
     - Subversion [svn] (history on branches is not preserved)
 
@@ -45,21 +47,23 @@
     uses --sourcesort to preserve original revision numbers order. Sort modes
     have the following effects:
 
-    --branchsort: convert from parent to child revision when possible, which
-      means branches are usually converted one after the other. It generates
-      more compact repositories.
-    --datesort: sort revisions by date. Converted repositories have
-      good-looking changelogs but are often an order of magnitude larger than
-      the same ones generated by --branchsort.
-    --sourcesort: try to preserve source revisions order, only supported by
-      Mercurial sources.
+    --branchsort  convert from parent to child revision when possible, which
+                  means branches are usually converted one after the other. It
+                  generates more compact repositories.
+
+    --datesort    sort revisions by date. Converted repositories have
+                  good-looking changelogs but are often an order of magnitude
+                  larger than the same ones generated by --branchsort.
+
+    --sourcesort  try to preserve source revisions order, only supported by
+                  Mercurial sources.
 
     If <REVMAP> isn't given, it will be put in a default location
     (<dest>/.hg/shamap by default). The <REVMAP> is a simple text file that
     maps each source commit ID to the destination ID for that revision, like
-    so:
+    so::
 
-    <source ID> <destination ID>
+      <source ID> <destination ID>
 
     If the file doesn't exist, it's automatically created. It's updated on
     each commit copied, so convert-repo can be interrupted and can be run
@@ -72,7 +76,7 @@
 
     The filemap is a file that allows filtering and remapping of files and
     directories. Comment lines start with '#'. Each line can contain one of
-    the following directives:
+    the following directives::
 
       include path/to/file
 
@@ -134,17 +138,17 @@
     Because CVS does not have changesets, it is necessary to collect
     individual commits to CVS and merge them into changesets. CVS source uses
     its internal changeset merging code by default but can be configured to
-    call the external 'cvsps' program by setting:
+    call the external 'cvsps' program by setting::
 
-    --config convert.cvsps='cvsps -A -u --cvs-direct -q'
+      --config convert.cvsps='cvsps -A -u --cvs-direct -q'
 
     This option is deprecated and will be removed in Mercurial 1.4.
 
     The options shown are the defaults.
 
-    Internal cvsps is selected by setting
+    Internal cvsps is selected by setting ::
 
-    --config convert.cvsps=builtin
+      --config convert.cvsps=builtin
 
     and has a few more configurable options:
 
diff --git a/hgext/keyword.py b/hgext/keyword.py
--- a/hgext/keyword.py
+++ b/hgext/keyword.py
@@ -38,7 +38,7 @@
 Configuration is done in the [keyword] and [keywordmaps] sections of hgrc
 files.
 
-Example:
+Example::
 
     [keyword]
     # expand keywords in every python file except those matching "x*"
diff --git a/hgext/mq.py b/hgext/mq.py
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -14,19 +14,19 @@
 Known patches are represented as patch files in the .hg/patches directory.
 Applied patches are both patch files and changesets.
 
-Common tasks (use "hg help command" for more details):
+Common tasks (use "hg help command" for more details)::
 
-prepare repository to work with patches   qinit
-create new patch                          qnew
-import existing patch                     qimport
+  prepare repository to work with patches   qinit
+  create new patch                          qnew
+  import existing patch                     qimport
 
-print patch series                        qseries
-print applied patches                     qapplied
-print name of top applied patch           qtop
+  print patch series                        qseries
+  print applied patches                     qapplied
+  print name of top applied patch           qtop
 
-add known patch to applied stack          qpush
-remove patch from applied stack           qpop
-refresh contents of top applied patch     qrefresh
+  add known patch to applied stack          qpush
+  remove patch from applied stack           qpop
+  refresh contents of top applied patch     qrefresh
 '''
 
 from mercurial.i18n import _
diff --git a/hgext/notify.py b/hgext/notify.py
--- a/hgext/notify.py
+++ b/hgext/notify.py
@@ -10,7 +10,7 @@
 Subscriptions can be managed through a hgrc file. Default mode is to print
 messages to stdout, for testing and configuring.
 
-To use, configure the notify extension and enable it in hgrc like this:
+To use, configure the notify extension and enable it in hgrc like this::
 
   [extensions]
   hgext.notify =
@@ -24,11 +24,11 @@
   [notify]
   # config items go here
 
-Required configuration items:
+Required configuration items::
 
   config = /path/to/file # file containing subscriptions
 
-Optional configuration items:
+Optional configuration items::
 
   test = True            # print messages to stdout for testing
   strip = 3              # number of slashes to strip for url paths
@@ -50,6 +50,8 @@
 The notify config file has same format as a regular hgrc file. It has two
 sections so you can express subscriptions in whatever way is handier for you.
 
+::
+
   [usersubs]
   # key is subscriber email, value is ","-separated list of glob patterns
   user at host = pattern
diff --git a/hgext/record.py b/hgext/record.py
--- a/hgext/record.py
+++ b/hgext/record.py
@@ -364,19 +364,19 @@
 
     You will be prompted for whether to record changes to each modified file,
     and for files with multiple changes, for each change to use. For each
-    query, the following responses are possible:
+    query, the following responses are possible::
 
-    y - record this change
-    n - skip this change
+      y - record this change
+      n - skip this change
 
-    s - skip remaining changes to this file
-    f - record remaining changes to this file
+      s - skip remaining changes to this file
+      f - record remaining changes to this file
 
-    d - done, skip remaining changes and files
-    a - record all changes to all remaining files
-    q - quit, recording no changes
+      d - done, skip remaining changes and files
+      a - record all changes to all remaining files
+      q - quit, recording no changes
 
-    ? - display help'''
+      ? - display help'''
 
     def record_committer(ui, repo, pats, opts):
         commands.commit(ui, repo, *pats, **opts)
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -14,6 +14,7 @@
 import archival, changegroup, cmdutil, sshserver, hbisect
 from hgweb import server
 import merge as merge_
+import minirst
 
 # Commands start here, listed alphabetically
 
@@ -133,14 +134,14 @@
     By default, the revision used is the parent of the working directory; use
     -r/--rev to specify a different revision.
 
-    To specify the type of archive to create, use -t/--type. Valid types are:
+    To specify the type of archive to create, use -t/--type. Valid types are::
 
-    "files" (default): a directory full of files
-    "tar": tar archive, uncompressed
-    "tbz2": tar archive, compressed using bzip2
-    "tgz": tar archive, compressed using gzip
-    "uzip": zip archive, uncompressed
-    "zip": zip archive, compressed using deflate
+      "files" (default): a directory full of files
+      "tar": tar archive, uncompressed
+      "tbz2": tar archive, compressed using bzip2
+      "tgz": tar archive, compressed using gzip
+      "uzip": zip archive, uncompressed
+      "zip": zip archive, compressed using deflate
 
     The exact name of the destination archive or directory is given using a
     format string; see 'hg help export' for details.
@@ -550,11 +551,11 @@
 
     Output may be to a file, in which case the name of the file is given using
     a format string. The formatting rules are the same as for the export
-    command, with the following additions:
+    command, with the following additions::
 
-    %s   basename of file being printed
-    %d   dirname of file being printed, or '.' if in repository root
-    %p   root-relative path name of file being printed
+      %s   basename of file being printed
+      %d   dirname of file being printed, or '.' if in repository root
+      %p   root-relative path name of file being printed
     """
     ctx = repo[opts.get('rev')]
     err = 1
@@ -600,7 +601,7 @@
     cases, use the --pull option to avoid hardlinking.
 
     In some cases, you can clone repositories and checked out files using full
-    hardlinks with
+    hardlinks with ::
 
       $ cp -al REPO REPOCLONE
 
@@ -1095,16 +1096,16 @@
     it will compare the merge changeset against its first parent only.
 
     Output may be to a file, in which case the name of the file is given using
-    a format string. The formatting rules are as follows:
+    a format string. The formatting rules are as follows::
 
-    %%   literal "%" character
-    %H   changeset hash (40 bytes of hexadecimal)
-    %N   number of patches being generated
-    %R   changeset revision number
-    %b   basename of the exporting repository
-    %h   short-form changeset hash (12 bytes of hexadecimal)
-    %n   zero-padded sequence number, starting at 1
-    %r   zero-padded changeset revision number
+      %%   literal "%" character
+      %H   changeset hash (40 bytes of hexadecimal)
+      %N   number of patches being generated
+      %R   changeset revision number
+      %b   basename of the exporting repository
+      %h   short-form changeset hash (12 bytes of hexadecimal)
+      %n   zero-padded sequence number, starting at 1
+      %r   zero-padded changeset revision number
 
     Without the -a/--text option, export will avoid generating diffs of files
     it detects as binary. With -a, export will generate a diff anyway,
@@ -1397,6 +1398,7 @@
     Given a topic, extension, or command name, print help for that topic.
     """
     option_lists = []
+    textwidth = util.termwidth() - 2
 
     def addglobalopts(aliases):
         if ui.verbose:
@@ -1449,7 +1451,8 @@
             doc = _("(no help text available)")
         if ui.quiet:
             doc = doc.splitlines(0)[0]
-        ui.write("\n%s\n" % doc.rstrip())
+
+        ui.write("\n%s\n" % minirst.format(doc, textwidth))
 
         if not ui.quiet:
             # options
@@ -1495,7 +1498,9 @@
 
         if name != 'shortlist':
             exts, maxlength = extensions.enabled()
-            ui.write(help.listexts(_('enabled extensions:'), exts, maxlength))
+            text = help.listexts(_('enabled extensions:'), exts, maxlength)
+            if text:
+                ui.write("\n%s\n" % minirst.format(text, textwidth))
 
         if not ui.quiet:
             addglobalopts(True)
@@ -1513,8 +1518,8 @@
         if hasattr(doc, '__call__'):
             doc = doc()
 
-        ui.write("%s\n" % header)
-        ui.write("%s\n" % doc.rstrip())
+        ui.write("%s\n\n" % header)
+        ui.write("%s\n" % minirst.format(doc, textwidth))
 
     def helpext(name):
         try:
@@ -1523,12 +1528,11 @@
             raise error.UnknownCommand(name)
 
         doc = gettext(mod.__doc__) or _('no help text available')
-        doc = doc.splitlines(0)
-        ui.write(_('%s extension - %s\n') % (name.split('.')[-1], doc[0]))
-        for d in doc[1:]:
-            ui.write(d, '\n')
-
-        ui.status('\n')
+        head, tail = doc.split('\n', 1)
+        ui.write(_('%s extension - %s\n\n') % (name.split('.')[-1], head))
+        if tail:
+            ui.write(minirst.format(tail, textwidth))
+            ui.status('\n\n')
 
         try:
             ct = mod.cmdtable
@@ -2326,13 +2330,13 @@
     The following table details the behavior of remove for different file
     states (columns) and option combinations (rows). The file states are Added
     [A], Clean [C], Modified [M] and Missing [!] (as reported by hg status).
-    The actions are Warn, Remove (from branch) and Delete (from disk).
+    The actions are Warn, Remove (from branch) and Delete (from disk)::
 
-           A  C  M  !
-    none   W  RD W  R
-    -f     R  RD RD R
-    -A     W  W  W  R
-    -Af    R  R  R  R
+             A  C  M  !
+      none   W  RD W  R
+      -f     R  RD RD R
+      -A     W  W  W  R
+      -Af    R  R  R  R
 
     This command schedules the files to be removed at the next commit. To undo
     a remove before that, see hg revert.
@@ -2407,9 +2411,10 @@
     whether or not files are resolved. All files must be marked as resolved
     before a commit is permitted.
 
-    The codes used to show the status of files are:
-    U = unresolved
-    R = resolved
+    The codes used to show the status of files are::
+
+      U = unresolved
+      R = resolved
     """
 
     all, mark, unmark, show = [opts.get(o) for o in 'all mark unmark list'.split()]
@@ -2672,7 +2677,7 @@
     Transactions are used to encapsulate the effects of all commands that
     create new changesets or propagate existing changesets into a repository.
     For example, the following commands are transactional, and their effects
-    can be rolled back:
+    can be rolled back::
 
       commit
       import
@@ -2780,15 +2785,16 @@
     If one revision is given, it is used as the base revision. If two
     revisions are given, the differences between them are shown.
 
-    The codes used to show the status of files are:
-    M = modified
-    A = added
-    R = removed
-    C = clean
-    ! = missing (deleted by non-hg command, but still tracked)
-    ? = not tracked
-    I = ignored
-      = origin of the previous file listed as A (added)
+    The codes used to show the status of files are::
+
+      M = modified
+      A = added
+      R = removed
+      C = clean
+      ! = missing (deleted by non-hg command, but still tracked)
+      ? = not tracked
+      I = ignored
+        = origin of the previous file listed as A (added)
     """
 
     node1, node2 = cmdutil.revpair(repo, opts.get('rev'))
diff --git a/mercurial/help.py b/mercurial/help.py
--- a/mercurial/help.py
+++ b/mercurial/help.py
@@ -43,10 +43,11 @@
     '''return a text listing of the given extensions'''
     if not exts:
         return ''
-    result = '\n%s\n\n' % header
+    # TODO: literal block is wrong, should be a field list or a simple table.
+    result = '\n%s\n\n ::\n\n' % header
     for name, desc in sorted(exts.iteritems()):
-        desc = util.wrap(desc, maxlength + 4)
-        result += ' %s   %s\n' % (name.ljust(maxlength), desc)
+        desc = util.wrap(desc, maxlength + 5)
+        result += '  %s   %s\n' % (name.ljust(maxlength), desc)
     return result
 
 def extshelp():
@@ -63,18 +64,18 @@
     to activate extensions as needed.
 
     To enable the "foo" extension, either shipped with Mercurial or in the
-    Python search path, create an entry for it in your hgrc, like this:
+    Python search path, create an entry for it in your hgrc, like this::
 
       [extensions]
       foo =
 
-    You may also specify the full path to an extension:
+    You may also specify the full path to an extension::
 
       [extensions]
       myfeature = ~/.hgext/myfeature.py
 
     To explicitly disable an extension enabled in an hgrc of broader scope,
-    prepend its path with !:
+    prepend its path with !::
 
       [extensions]
       # disabling extension bar residing in /path/to/extension/bar.py
@@ -95,24 +96,25 @@
     (["dates"], _("Date Formats"),
      _(r'''
     Some commands allow the user to specify a date, e.g.:
-    * backout, commit, import, tag: Specify the commit date.
-    * log, revert, update: Select revision(s) by date.
 
-    Many date formats are valid. Here are some examples:
+    - backout, commit, import, tag: Specify the commit date.
+    - log, revert, update: Select revision(s) by date.
 
-    "Wed Dec 6 13:18:29 2006" (local timezone assumed)
-    "Dec 6 13:18 -0600" (year assumed, time offset provided)
-    "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
-    "Dec 6" (midnight)
-    "13:18" (today assumed)
-    "3:39" (3:39AM assumed)
-    "3:39pm" (15:39)
-    "2006-12-06 13:18:29" (ISO 8601 format)
-    "2006-12-6 13:18"
-    "2006-12-6"
-    "12-6"
-    "12/6"
-    "12/6/6" (Dec 6 2006)
+    Many date formats are valid. Here are some examples::
+
+      "Wed Dec 6 13:18:29 2006" (local timezone assumed)
+      "Dec 6 13:18 -0600" (year assumed, time offset provided)
+      "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
+      "Dec 6" (midnight)
+      "13:18" (today assumed)
+      "3:39" (3:39AM assumed)
+      "3:39pm" (15:39)
+      "2006-12-06 13:18:29" (ISO 8601 format)
+      "2006-12-6 13:18"
+      "2006-12-6"
+      "12-6"
+      "12/6"
+      "12/6/6" (Dec 6 2006)
 
     Lastly, there is Mercurial's internal format:
 
@@ -123,12 +125,12 @@
     offset of the local timezone, in seconds west of UTC (negative if the
     timezone is east of UTC).
 
-    The log command also accepts date ranges:
+    The log command also accepts date ranges::
 
-    "<{datetime}" - at or before a given date/time
-    ">{datetime}" - on or after a given date/time
-    "{datetime} to {datetime}" - a date range, inclusive
-    "-{days}" - within a given number of days of today
+      "<{datetime}" - at or before a given date/time
+      ">{datetime}" - on or after a given date/time
+      "{datetime} to {datetime}" - a date range, inclusive
+      "-{days}" - within a given number of days of today
     ''')),
 
     (["patterns"], _("File Name Patterns"),
@@ -161,94 +163,95 @@
                    the repository
     path:path:name a file or directory named "path:name"
 
-    Glob examples:
+    Glob examples::
 
-    glob:*.c       any name ending in ".c" in the current directory
-    *.c            any name ending in ".c" in the current directory
-    **.c           any name ending in ".c" in any subdirectory of the current
-                   directory including itself.
-    foo/*.c        any name ending in ".c" in the directory foo
-    foo/**.c       any name ending in ".c" in any subdirectory of foo
-                   including itself.
+      glob:*.c       any name ending in ".c" in the current directory
+      *.c            any name ending in ".c" in the current directory
+      **.c           any name ending in ".c" in any subdirectory of the
+                     current directory including itself.
+      foo/*.c        any name ending in ".c" in the directory foo
+      foo/**.c       any name ending in ".c" in any subdirectory of foo
+                     including itself.
 
-    Regexp examples:
+    Regexp examples::
 
-    re:.*\.c$      any name ending in ".c", anywhere in the repository
+      re:.*\.c$      any name ending in ".c", anywhere in the repository
 
     ''')),
 
     (['environment', 'env'], _('Environment Variables'),
      _(r'''
-HG::
+HG
     Path to the 'hg' executable, automatically passed when running hooks,
     extensions or external tools. If unset or empty, this is the hg
     executable's name if it's frozen, or an executable named 'hg' (with
     %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on Windows) is
     searched.
 
-HGEDITOR::
+HGEDITOR
     This is the name of the editor to run when committing. See EDITOR.
 
     (deprecated, use .hgrc)
 
-HGENCODING::
+HGENCODING
     This overrides the default locale setting detected by Mercurial. This
     setting is used to convert data including usernames, changeset
     descriptions, tag names, and branches. This setting can be overridden with
     the --encoding command-line option.
 
-HGENCODINGMODE::
+HGENCODINGMODE
     This sets Mercurial's behavior for handling unknown characters while
     transcoding user input. The default is "strict", which causes Mercurial to
     abort if it can't map a character. Other settings include "replace", which
     replaces unknown characters, and "ignore", which drops them. This setting
     can be overridden with the --encodingmode command-line option.
 
-HGMERGE::
+HGMERGE
     An executable to use for resolving merge conflicts. The program will be
     executed with three arguments: local file, remote file, ancestor file.
 
     (deprecated, use .hgrc)
 
-HGRCPATH::
+HGRCPATH
     A list of files or directories to search for hgrc files. Item separator is
     ":" on Unix, ";" on Windows. If HGRCPATH is not set, platform default
     search path is used. If empty, only the .hg/hgrc from the current
     repository is read.
 
     For each element in HGRCPATH:
-    * if it's a directory, all files ending with .rc are added
-    * otherwise, the file itself will be added
 
-HGUSER::
+    - if it's a directory, all files ending with .rc are added
+    - otherwise, the file itself will be added
+
+HGUSER
     This is the string used as the author of a commit. If not set, available
     values will be considered in this order:
 
-    * HGUSER (deprecated)
-    * hgrc files from the HGRCPATH
-    * EMAIL
-    * interactive prompt
-    * LOGNAME (with '@hostname' appended)
+    - HGUSER (deprecated)
+    - hgrc files from the HGRCPATH
+    - EMAIL
+    - interactive prompt
+    - LOGNAME (with '@hostname' appended)
 
     (deprecated, use .hgrc)
 
-EMAIL::
+EMAIL
     May be used as the author of a commit; see HGUSER.
 
-LOGNAME::
+LOGNAME
     May be used as the author of a commit; see HGUSER.
 
-VISUAL::
+VISUAL
     This is the name of the editor to use when committing. See EDITOR.
 
-EDITOR::
+EDITOR
     Sometimes Mercurial needs to open a text file in an editor for a user to
     modify, for example when writing commit messages. The editor it uses is
     determined by looking at the environment variables HGEDITOR, VISUAL and
     EDITOR, in that order. The first non-empty one is chosen. If all of them
     are empty, the editor defaults to 'vi'.
 
-PYTHONPATH::
+PYTHONPATH
     This is used by Python to find imported modules and may need to be set
     appropriately if this Mercurial is not installed system-wide.
     ''')),
@@ -431,7 +434,7 @@
 
     (['urls'], _('URL Paths'),
      _(r'''
-    Valid URLs are of the form:
+    Valid URLs are of the form::
 
       local/filesystem/path[#revision]
       file://local/filesystem/path[#revision]
@@ -450,26 +453,32 @@
     server.
 
     Some notes about using SSH with Mercurial:
+
     - SSH requires an accessible shell account on the destination machine and
       a copy of hg in the remote path or specified with as remotecmd.
     - path is relative to the remote user's home directory by default. Use an
-      extra slash at the start of a path to specify an absolute path:
+      extra slash at the start of a path to specify an absolute path::
+
         ssh://example.com//tmp/repository
+
     - Mercurial doesn't use its own compression via SSH; the right thing to do
-      is to configure it in your ~/.ssh/config, e.g.:
+      is to configure it in your ~/.ssh/config, e.g.::
+
         Host *.mylocalnetwork.example.com
           Compression no
         Host *
           Compression yes
+
       Alternatively specify "ssh -C" as your ssh command in your hgrc or with
       the --ssh command line option.
 
     These URLs can all be stored in your hgrc with path aliases under the
-    [paths] section like so:
-    [paths]
-    alias1 = URL1
-    alias2 = URL2
-    ...
+    [paths] section like so::
+
+      [paths]
+      alias1 = URL1
+      alias2 = URL2
+      ...
 
     You can then use the alias for any command that uses a URL (for example
     'hg pull alias1' would pull from the 'alias1' path).
diff --git a/tests/test-convert.out b/tests/test-convert.out
--- a/tests/test-convert.out
+++ b/tests/test-convert.out
@@ -3,6 +3,7 @@
 convert a foreign SCM repository to a Mercurial one.
 
     Accepted source formats [identifiers]:
+
     - Mercurial [hg]
     - CVS [cvs]
     - Darcs [darcs]
@@ -14,6 +15,7 @@
     - Perforce [p4]
 
     Accepted destination formats [identifiers]:
+
     - Mercurial [hg]
     - Subversion [svn] (history on branches is not preserved)
 
@@ -29,14 +31,14 @@
     uses --sourcesort to preserve original revision numbers order. Sort modes
     have the following effects:
 
-    --branchsort: convert from parent to child revision when possible, which
-      means branches are usually converted one after the other. It generates
-      more compact repositories.
-    --datesort: sort revisions by date. Converted repositories have
-      good-looking changelogs but are often an order of magnitude larger than
-      the same ones generated by --branchsort.
-    --sourcesort: try to preserve source revisions order, only supported by
-      Mercurial sources.
+    --branchsort  convert from parent to child revision when possible, which
+                  means branches are usually converted one after the other. It
+                  generates more compact repositories.
+    --datesort    sort revisions by date. Converted repositories have good-
+                  looking changelogs but are often an order of magnitude
+                  larger than the same ones generated by --branchsort.
+    --sourcesort  try to preserve source revisions order, only supported by
+                  Mercurial sources.
 
     If <REVMAP> isn't given, it will be put in a default location
     (<dest>/.hg/shamap by default). The <REVMAP> is a simple text file that
@@ -58,11 +60,11 @@
     directories. Comment lines start with '#'. Each line can contain one of
     the following directives:
 
-      include path/to/file
+    include path/to/file
 
-      exclude path/to/file
+    exclude path/to/file
 
-      rename from/file to/file
+    rename from/file to/file
 
     The 'include' directive causes a file, or all files under a directory, to
     be included in the destination repository, and the exclusion of all other
diff --git a/tests/test-help.out b/tests/test-help.out
--- a/tests/test-help.out
+++ b/tests/test-help.out
@@ -267,6 +267,7 @@
     revisions are given, the differences between them are shown.
 
     The codes used to show the status of files are:
+
     M = modified
     A = added
     R = removed
diff --git a/tests/test-keyword.out b/tests/test-keyword.out
--- a/tests/test-keyword.out
+++ b/tests/test-keyword.out
@@ -13,10 +13,10 @@
 
 Example:
 
-    [keyword]
-    # expand keywords in every python file except those matching "x*"
-    **.py =
-    x*    = ignore
+[keyword]
+# expand keywords in every python file except those matching "x*"
+**.py =
+x*    = ignore
 
 NOTE: the more specific you are in your filename patterns the less you lose
 speed in huge repositories.
diff --git a/tests/test-notify.out b/tests/test-notify.out
--- a/tests/test-notify.out
+++ b/tests/test-notify.out
@@ -5,51 +5,51 @@
 
 To use, configure the notify extension and enable it in hgrc like this:
 
-  [extensions]
-  hgext.notify =
+[extensions]
+hgext.notify =
 
-  [hooks]
-  # one email for each incoming changeset
-  incoming.notify = python:hgext.notify.hook
-  # batch emails when many changesets incoming at one time
-  changegroup.notify = python:hgext.notify.hook
+[hooks]
+# one email for each incoming changeset
+incoming.notify = python:hgext.notify.hook
+# batch emails when many changesets incoming at one time
+changegroup.notify = python:hgext.notify.hook
 
-  [notify]
-  # config items go here
+[notify]
+# config items go here
 
 Required configuration items:
 
-  config = /path/to/file # file containing subscriptions
+config = /path/to/file # file containing subscriptions
 
 Optional configuration items:
 
-  test = True            # print messages to stdout for testing
-  strip = 3              # number of slashes to strip for url paths
-  domain = example.com   # domain to use if committer missing domain
-  style = ...            # style file to use when formatting email
-  template = ...         # template to use when formatting email
-  incoming = ...         # template to use when run as incoming hook
-  changegroup = ...      # template when run as changegroup hook
-  maxdiff = 300          # max lines of diffs to include (0=none, -1=all)
-  maxsubject = 67        # truncate subject line longer than this
-  diffstat = True        # add a diffstat before the diff content
-  sources = serve        # notify if source of incoming changes in this list
-                         # (serve == ssh or http, push, pull, bundle)
-  [email]
-  from = user at host.com   # email address to send as if none given
-  [web]
-  baseurl = http://hgserver/... # root of hg web site for browsing commits
+test = True            # print messages to stdout for testing
+strip = 3              # number of slashes to strip for url paths
+domain = example.com   # domain to use if committer missing domain
+style = ...            # style file to use when formatting email
+template = ...         # template to use when formatting email
+incoming = ...         # template to use when run as incoming hook
+changegroup = ...      # template when run as changegroup hook
+maxdiff = 300          # max lines of diffs to include (0=none, -1=all)
+maxsubject = 67        # truncate subject line longer than this
+diffstat = True        # add a diffstat before the diff content
+sources = serve        # notify if source of incoming changes in this list
+                       # (serve == ssh or http, push, pull, bundle)
+[email]
+from = user at host.com   # email address to send as if none given
+[web]
+baseurl = http://hgserver/... # root of hg web site for browsing commits
 
 The notify config file has same format as a regular hgrc file. It has two
 sections so you can express subscriptions in whatever way is handier for you.
 
-  [usersubs]
-  # key is subscriber email, value is ","-separated list of glob patterns
-  user at host = pattern
+[usersubs]
+# key is subscriber email, value is ","-separated list of glob patterns
+user at host = pattern
 
-  [reposubs]
-  # key is glob pattern, value is ","-separated list of subscriber emails
-  pattern = user at host
+[reposubs]
+# key is glob pattern, value is ","-separated list of subscriber emails
+pattern = user at host
 
 Glob patterns are matched against path to repository root.
 


More information about the Mercurial-devel mailing list