[PATCH 3 of 5] preserve order of items in the list of special help topcis

Adrian Buehlmann adrian at cadifra.com
Mon May 26 13:04:57 CDT 2008


On 24.05.2008 23:11, Johannes Stezenbach wrote:
> # HG changeset patch
> # User Johannes Stezenbach <js at sig21.net>
> # Date 1211658427 -7200
> # Node ID fa4fc9c14e654aa2be3e40ba11a75639ba47d61e
> # Parent  27401a7fa73a84d109719bbc95fb3fd4dced89a2
> preserve order of items in the list of special help topcis
> 
> diff -r 27401a7fa73a -r fa4fc9c14e65 doc/gendoc.py
> --- a/doc/gendoc.py	Sat May 24 21:40:36 2008 +0200
> +++ b/doc/gendoc.py	Sat May 24 21:47:07 2008 +0200
> @@ -92,11 +92,10 @@
>              ui.write(_("    aliases: %s\n\n") % " ".join(d['aliases']))
>  
>      # print topics
> -    for t in helptable:
> +    for t, doc in helptable:
>          l = t.split("|")
>          section = l[-1]
>          underlined(_(section).upper())
> -        doc = helptable[t]
>          if callable(doc):
>              doc = doc()
>          ui.write(_(doc))
> diff -r 27401a7fa73a -r fa4fc9c14e65 mercurial/commands.py
> --- a/mercurial/commands.py	Sat May 24 21:40:36 2008 +0200
> +++ b/mercurial/commands.py	Sat May 24 21:47:07 2008 +0200
> @@ -1315,16 +1315,16 @@
>  
>      def helptopic(name):
>          v = None
> -        for i in help.helptable:
> +        for i, d in help.helptable:
>              l = i.split('|')
>              if name in l:
>                  v = i
>                  header = l[-1]
> +                doc = d
>          if not v:
>              raise cmdutil.UnknownCommand(name)
>  
>          # description
> -        doc = help.helptable[v]
>          if not doc:
>              doc = _("(No help text available)")
>          if callable(doc):
> @@ -1398,7 +1398,7 @@
>      if ui.verbose:
>          ui.write(_("\nspecial help topics:\n"))
>          topics = []
> -        for i in help.helptable:
> +        for i, d in help.helptable:
>              l = i.split('|')
>              topics.append((", ".join(l[:-1]), l[-1]))
>          topics_len = max([len(s[0]) for s in topics])
> diff -r 27401a7fa73a -r fa4fc9c14e65 mercurial/help.py
> --- a/mercurial/help.py	Sat May 24 21:40:36 2008 +0200
> +++ b/mercurial/help.py	Sat May 24 21:47:07 2008 +0200
> @@ -5,8 +5,8 @@
>  # This software may be used and distributed according to the terms
>  # of the GNU General Public License, incorporated herein by reference.
>  
> -helptable = {
> -    "dates|Date Formats":
> +helptable = (
> +    ("dates|Date Formats",
>      r'''
>      Some commands allow the user to specify a date:
>      backout, commit, import, tag: Specify the commit date.
> @@ -43,9 +43,107 @@
>      ">{date}" - on or after a given date
>      "{date} to {date}" - a date range, inclusive
>      "-{days}" - within a given number of days of today
> -    ''',
> +    '''),
>  
> -    'environment|env|Environment Variables':
> +    ("patterns|File Name Patterns",
> +    r'''
> +    Mercurial accepts several notations for identifying one or more
> +    files at a time.
> +
> +    By default, Mercurial treats filenames as shell-style extended
> +    glob patterns.
> +
> +    Alternate pattern notations must be specified explicitly.
> +
> +    To use a plain path name without any pattern matching, start a
> +    name with "path:".  These path names must match completely, from
> +    the root of the current repository.
> +
> +    To use an extended glob, start a name with "glob:".  Globs are
> +    rooted at the current directory; a glob such as "*.c" will match
> +    files ending in ".c" in the current directory only.
> +
> +    The supported glob syntax extensions are "**" to match any string
> +    across path separators, and "{a,b}" to mean "a or b".
> +
> +    To use a Perl/Python regular expression, start a name with "re:".
> +    Regexp pattern matching is anchored at the root of the repository.
> +
> +    Plain examples:
> +
> +    path:foo/bar   a name bar in a directory named foo in the root of
> +                   the repository
> +    path:path:name a file or directory named "path:name"
> +
> +    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 the current directory, or
> +                   any subdirectory
> +    foo/*.c        any name ending in ".c" in the directory foo
> +    foo/**.c       any name ending in ".c" in the directory foo, or any
> +                   subdirectory
> +
> +    Regexp examples:
> +
> +    re:.*\.c$      any name ending in ".c", anywhere in the repository
> +
> +'''),
> +
> +   ('revs|revisions|Specifying Single Revisions',
> +   r'''
> +    Mercurial accepts several notations for identifying individual
> +    revisions.
> +
> +    A plain integer is treated as a revision number. Negative
> +    integers are treated as offsets from the tip, with -1 denoting the
> +    tip.
> +
> +    A 40-digit hexadecimal string is treated as a unique revision
> +    identifier.
> +
> +    A hexadecimal string less than 40 characters long is treated as a
> +    unique revision identifier, and referred to as a short-form
> +    identifier. A short-form identifier is only valid if it is the
> +    prefix of one full-length identifier.
> +
> +    Any other string is treated as a tag name, which is a symbolic
> +    name associated with a revision identifier. Tag names may not
> +    contain the ":" character.
> +
> +    The reserved name "tip" is a special tag that always identifies
> +    the most recent revision.
> +
> +    The reserved name "null" indicates the null revision. This is the
> +    revision of an empty repository, and the parent of revision 0.
> +
> +    The reserved name "." indicates the working directory parent. If
> +    no working directory is checked out, it is equivalent to null.
> +    If an uncommitted merge is in progress, "." is the revision of
> +    the first parent.
> +'''),
> +
> +   ('mrevs|multirevs|Specifying Multiple Revisions',
> +   r'''
> +    When Mercurial accepts more than one revision, they may be
> +    specified individually, or provided as a continuous range,
> +    separated by the ":" character.
> +
> +    The syntax of range notation is [BEGIN]:[END], where BEGIN and END
> +    are revision identifiers. Both BEGIN and END are optional. If
> +    BEGIN is not specified, it defaults to revision number 0. If END
> +    is not specified, it defaults to the tip. The range ":" thus
> +    means "all revisions".
> +
> +    If BEGIN is greater than END, revisions are treated in reverse
> +    order.
> +
> +    A range acts as a closed interval. This means that a range of 3:5
> +    gives 3, 4 and 5. Similarly, a range of 4:2 gives 4, 3, and 2.
> +'''),
> +
> +    ('environment|env|Environment Variables',
>      r'''
>  HG::
>      Path to the 'hg' executable, automatically passed when running hooks,
> @@ -114,103 +212,6 @@
>  PYTHONPATH::
>      This is used by Python to find imported modules and may need to be set
>      appropriately if Mercurial is not installed system-wide.
> -    ''',
> +    '''),
> +)
>  
> -    "patterns|File Name Patterns": r'''
> -    Mercurial accepts several notations for identifying one or more
> -    files at a time.
> -
> -    By default, Mercurial treats filenames as shell-style extended
> -    glob patterns.
> -
> -    Alternate pattern notations must be specified explicitly.
> -
> -    To use a plain path name without any pattern matching, start a
> -    name with "path:".  These path names must match completely, from
> -    the root of the current repository.
> -
> -    To use an extended glob, start a name with "glob:".  Globs are
> -    rooted at the current directory; a glob such as "*.c" will match
> -    files ending in ".c" in the current directory only.
> -
> -    The supported glob syntax extensions are "**" to match any string
> -    across path separators, and "{a,b}" to mean "a or b".
> -
> -    To use a Perl/Python regular expression, start a name with "re:".
> -    Regexp pattern matching is anchored at the root of the repository.
> -
> -    Plain examples:
> -
> -    path:foo/bar   a name bar in a directory named foo in the root of
> -                   the repository
> -    path:path:name a file or directory named "path:name"
> -
> -    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 the current directory, or
> -                   any subdirectory
> -    foo/*.c        any name ending in ".c" in the directory foo
> -    foo/**.c       any name ending in ".c" in the directory foo, or any
> -                   subdirectory
> -
> -    Regexp examples:
> -
> -    re:.*\.c$      any name ending in ".c", anywhere in the repository
> -
> -''',
> -
> -   'revs|revisions|Specifying Single Revisions':
> -   r'''
> -    Mercurial accepts several notations for identifying individual
> -    revisions.

Hmmm, so here you move the part about "revs" which you first added to help.py
in patch 2 to a different place inside help.py.

So I gather this patch here depends on patch 2.

But it would be a lot easier to review these both patches if you would place
the text in the right order in patch 2 already.

Could you please reorganize these patches accordingly?

Maybe it would make sense to change the order of patch 2 and 3. First doing
the "preserve ordering" thing (this patch here) and then the "revisions help text
moving" (your patch no 2).

Maybe patch 2 and 3 could be patchbombed as a an independent series? Are they
unrelated to patch 1, 4 and 5?



More information about the Mercurial-devel mailing list