On Sat, 07 Jan 2017 23:34:51 -0500, Sean Farley <s...@farley.io> wrote:

Matt Harbison <mharbiso...@gmail.com> writes:

On Sat, 07 Jan 2017 22:55:02 -0500, Sean Farley <s...@farley.io> wrote:

Matt Harbison <mharbiso...@gmail.com> writes:

# HG changeset patch
# User Matt Harbison <matt_harbi...@yahoo.com>
# Date 1483842392 18000
#      Sat Jan 07 21:26:32 2017 -0500
# Node ID 7347f75339503a8266285ac12412ac5f104d4df0
# Parent  4ab19763d71c2bb9a239dff523b18ed860e34563
revset: add regular expression support to 'desc()'

The legacy behavior of doing a case insensitive match for literals is
preserved
for BC.  This includes with the new 'literal:' prefix for user
simplicity.

There are two other revsets that do case insensitive matches- 'user()'
(and its
alias 'author()'), and 'keyword()'.  The 'keyword()' predicate only
supports
literals, so its behavior isn't interesting right now.  The 'user()'
predicate
is documented to support regex, but ends up lowercasing both the needle
and the
haystack, effectively making it a case insensitive regex.  That
surprised me,
since it's the only instance of that behavior.  I'm not sure if this
should
conform to that because we are stuck with BC, or if that should be
considered a
bug and changed. If we can't change it, that probably precludes adding
an
insensitive regex matcher [1].

[1]
https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-January/092070.html

I was a bit confused before because I was mixing up templates with
revsets. If I follow your previous patch, you want to have a revset that
just searches the first line of the description, correct?

Correct.

If that's correct, it would seem that our choices with template
functionality might be a precedent for this, no?

Ideally. But I'm not sure how to apply that here.  Are you suggesting a
new predicate 'firstline()' (instead of 'summary')?  I assumed the
template filter was generically named because it's a generic filter
(though realistically I'm not sure what else you would want to limit to
the first line).

If you mean the filtering functionality ("{desc|firstline}"), I'm not sure
how that helps.  Obviously you can filter _revisions_ by chaining
predicates, but what this needs to do is narrow down the _field_ being
tested within one predicate.  I don't know of any revset mechanism to do
that.

Yeah, that makes sense. I was just trying to think out loud. One of the
reasons we went with 'firstline' in the template engine was because it
was so damn hard to write a regex (not to mention all the escaping
needed for quoting on the command line) for just the first line.

I'm not really suggesting a change here, just bringing to light some of
the reasoning before.

Oh, not a problem. I've been trying to keep up with the ML, but haven't been coding lately. So I thought maybe I had forgotten something, or missed some new functionality.

I definitely don't want to inflict that sort of regex on the user here either. This patch was just a simple pothole to fill while waiting for feedback on the original. But it turned out to be potentially not so simple because of prior choices.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to