[PATCH] minifileset: allow 'path:' patterns to have an explicit trailing slash

Matt Harbison mharbison72 at gmail.com
Tue Feb 13 07:58:50 EST 2018


> On Feb 13, 2018, at 6:27 AM, Yuya Nishihara <yuya at tcha.org> wrote:
> 
>> On Mon, 12 Feb 2018 22:17:35 -0500, Matt Harbison wrote:
>> # HG changeset patch
>> # User Matt Harbison <matt_harbison at yahoo.com>
>> # Date 1518488713 18000
>> #      Mon Feb 12 21:25:13 2018 -0500
>> # Node ID e99e6917138593d2dddf7e0f5506dbd3f6c87743
>> # Parent  9b5df6e19a4f308e14703a8136cd0530c1e1d1a9
>> minifileset: allow 'path:' patterns to have an explicit trailing slash
>> 
>> We allow for it on the command line, with `hg status`, for example.  I thought
>> that I copied this "n.startswith(p) and (len(n) == pl or n[pl] == '/')" pattern
>> from somewhere, but I don't see it now.
>> 
>> diff --git a/mercurial/minifileset.py b/mercurial/minifileset.py
>> --- a/mercurial/minifileset.py
>> +++ b/mercurial/minifileset.py
>> @@ -26,7 +26,7 @@
>>                     raise error.ParseError(_('reserved character: %s') % c)
>>             return lambda n, s: n.endswith(ext)
>>         elif name.startswith('path:'): # directory or full path test
>> -            p = name[5:] # prefix
>> +            p = name[5:] if name[-1] != '/' else name[5:-1] # prefix
> 
> Doesn't it mean 'a/' matches 'a'?

Yes. (But 'a' won’t match 'ab'.)  Basically, I spent some time last week writing ignore rules for some converted repos, and got into the habit of appending a trailing '/' to ensure the match is a directory, and not just a substring.  When I did that here, it took awhile to figure out why the path was being ignored.  ('path:' only matches directories)

> Can't we reuse some parts of the match module to build a function or regexp
> from a pattern string?

Probably.  I’ve seen a couple cases where a regex pattern would be useful.  I just assumed those other match types were part of the performance concern that was the reason for splitting out the mini language in the first place.



More information about the Mercurial-devel mailing list