[PATCH 3 of 3 V2] help: eliminate duplicate text for revset string patterns

Martin von Zweigbergk martinvonz at google.com
Fri Jan 13 00:34:45 EST 2017


On Thu, Jan 12, 2017 at 9:24 PM, Matt Harbison <mharbison72 at gmail.com> wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1483850135 18000
> #      Sat Jan 07 23:35:35 2017 -0500
> # Node ID 2060486431053a99eafa4234aea139f6a31dc2d7
> # Parent  29cbe16c5cccf600fae928df52dbd44171096a6f
> help: eliminate duplicate text for revset string patterns
>
> There's no reason to duplicate this so many times, and it's likely an instance
> will be missed if support for a new pattern is added and documented.  The
> stringmatcher is mostly used by revsets, though it is also used for the 'tag'
> related templates, and namespace filtering in the journal extension.  So maybe
> there's a better place to document it.  `hg help patterns` seems inappropriate,
> because that is all file pattern matching.
>
> While here, indicate how to perform case insensitive regex searches.
>
> diff --git a/mercurial/help/revsets.txt b/mercurial/help/revsets.txt
> --- a/mercurial/help/revsets.txt
> +++ b/mercurial/help/revsets.txt

This file no longer exists. I merged it into revisions.txt very
recently, so you should probably rebase this series on top of @ from
the "committed" repo
(https://www.mercurial-scm.org/repo/hg-committed/) and resend. Sorry.

> @@ -79,6 +79,23 @@
>  ``x^``
>    Equivalent to ``x^1``, the first parent of each changeset in x.
>
> +Patterns
> +========
> +
> +Where noted, predicates that perform string matching can accept a pattern
> +string. The pattern may be either a literal, or a regular expression. If the
> +pattern starts with ``re:``, the remainder of the pattern is treated as a
> +regular expression. Otherwise, it is treated as a literal. To match a pattern
> +that actually starts with ``re:``, use the prefix ``literal:``.
> +
> +Matching is case-sensitive, unless otherwise noted.  To perform a case-
> +insensitive match on a case-sensitive predicate, use a regular expression,
> +prefixed with ``(?i)``.
> +
> +  For example::
> +
> +    ``tag(r're:(?i)release')`` matches tags containing "release" or "RELEASE".
> +
>  Predicates
>  ==========
>
> diff --git a/mercurial/revset.py b/mercurial/revset.py
> --- a/mercurial/revset.py
> +++ b/mercurial/revset.py
> @@ -588,9 +588,7 @@
>  def bookmark(repo, subset, x):
>      """The named bookmark or all bookmarks.
>
> -    If `name` starts with `re:`, the remainder of the name is treated as
> -    a regular expression. To match a bookmark that actually starts with `re:`,
> -    use the prefix `literal:`.
> +    Pattern matching is supported for `name`. See ``hg help revsets.patterns``.
>      """
>      # i18n: "bookmark" is a keyword
>      args = getargs(x, 0, 1, _('bookmark takes one or no arguments'))
> @@ -628,9 +626,8 @@
>      All changesets belonging to the given branch or the branches of the given
>      changesets.
>
> -    If `string` starts with `re:`, the remainder of the name is treated as
> -    a regular expression. To match a branch that actually starts with `re:`,
> -    use the prefix `literal:`.
> +    Pattern matching is supported for `string`. See
> +    ``hg help revsets.patterns``.
>      """
>      getbi = repo.revbranchcache().branchinfo
>
> @@ -815,9 +812,8 @@
>  def desc(repo, subset, x):
>      """Search commit message for string. The match is case-insensitive.
>
> -    If `string` starts with `re:`, the remainder of the string is treated as
> -    a regular expression. To match a substring that actually starts with `re:`,
> -    use the prefix `literal:`.
> +    Pattern matching is supported for `string`. See
> +    ``hg help revsets.patterns``.
>      """
>      # i18n: "desc" is a keyword
>      ds = getstring(x, _("desc requires a string"))
> @@ -927,9 +923,8 @@
>      """Changesets with the given label in the extra metadata, with the given
>      optional value.
>
> -    If `value` starts with `re:`, the remainder of the value is treated as
> -    a regular expression. To match a value that actually starts with `re:`,
> -    use the prefix `literal:`.
> +    Pattern matching is supported for `value`. See
> +    ``hg help revsets.patterns``.
>      """
>      args = getargsdict(x, 'extra', 'label value')
>      if 'label' not in args:
> @@ -1409,9 +1404,8 @@
>  def named(repo, subset, x):
>      """The changesets in a given namespace.
>
> -    If `namespace` starts with `re:`, the remainder of the string is treated as
> -    a regular expression. To match a namespace that actually starts with `re:`,
> -    use the prefix `literal:`.
> +    Pattern matching is supported for `namespace`. See
> +    ``hg help revsets.patterns``.
>      """
>      # i18n: "named" is a keyword
>      args = getargs(x, 1, 1, _('named requires a namespace argument'))
> @@ -2267,9 +2261,8 @@
>  def tag(repo, subset, x):
>      """The specified tag by name, or all tagged revisions if no name is given.
>
> -    If `name` starts with `re:`, the remainder of the name is treated as
> -    a regular expression. To match a tag that actually starts with `re:`,
> -    use the prefix `literal:`.
> +    Pattern matching is supported for `name`. See
> +    ``hg help revsets.patterns``.
>      """
>      # i18n: "tag" is a keyword
>      args = getargs(x, 0, 1, _("tag takes one or no arguments"))
> @@ -2310,9 +2303,8 @@
>  def user(repo, subset, x):
>      """User name contains string. The match is case-insensitive.
>
> -    If `string` starts with `re:`, the remainder of the string is treated as
> -    a regular expression. To match a user that actually contains `re:`, use
> -    the prefix `literal:`.
> +    Pattern matching is supported for `string`. See
> +    ``hg help revsets.patterns``.
>      """
>      return author(repo, subset, x)
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list