Mercurial > hg
changeset 30783:931a60880df4
revset: add regular expression support to 'desc'
This is a case insensitive predicate like 'author', so it conforms to the
existing behavior of performing a case insensitive regex.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 07 Jan 2017 21:26:32 -0500 |
parents | db38cfc7c29d |
children | 5dd67f0993ce |
files | mercurial/revset.py tests/test-revset.t |
diffstat | 2 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/revset.py Wed Jan 11 22:42:10 2017 -0500 +++ b/mercurial/revset.py Sat Jan 07 21:26:32 2017 -0500 @@ -814,15 +814,18 @@ @predicate('desc(string)', safe=True) 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:`. """ # i18n: "desc" is a keyword - ds = encoding.lower(getstring(x, _("desc requires a string"))) - - def matches(x): - c = repo[x] - return ds in encoding.lower(c.description()) - - return subset.filter(matches, condrepr=('<desc %r>', ds)) + ds = getstring(x, _("desc requires a string")) + + kind, pattern, matcher = _substringmatcher(ds, casesensitive=False) + + return subset.filter(lambda r: matcher(repo[r].description()), + condrepr=('<desc %r>', ds)) def _descendants(repo, subset, x, followfirst=False): roots = getset(repo, fullreposet(repo), x)