[PATCH] revset: add regular expression support to 'desc()'
Matt Harbison
mharbison72 at gmail.com
Sat Jan 7 23:25:21 EST 2017
On Sat, 07 Jan 2017 22:55:02 -0500, Sean Farley <sean at farley.io> wrote:
> Matt Harbison <mharbison72 at gmail.com> writes:
>
>> # HG changeset patch
>> # User Matt Harbison <matt_harbison at 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.
More information about the Mercurial-devel
mailing list