--- a/mercurial/match.py Mon Mar 27 17:30:14 2023 -0400
+++ b/mercurial/match.py Sat Apr 01 05:57:09 2023 +0200
@@ -197,7 +197,7 @@
Usually a patternmatcher is returned:
>>> _match(b'/foo', b'.', [br're:.*\.c$', b'path:foo/a', b'*.py'])
- <patternmatcher patterns='.*\\.c$|foo/a(?:/|$)|[^/]*\\.py$'>
+ <patternmatcher patterns='[^/]*\\.py$|foo/a(?:/|$)|.*\\.c$'>
Combining 'patterns' with 'include' (resp. 'exclude') gives an
intersectionmatcher (resp. a differencematcher):
@@ -614,7 +614,7 @@
True
>>> m.files()
- ['', 'foo/a', 'b', '']
+ [b'', b'foo/a', b'', b'b']
>>> m.exact(b'foo/a')
True
>>> m.exact(b'b')
@@ -625,6 +625,7 @@
def __init__(self, root, kindpats, badfn=None):
super(patternmatcher, self).__init__(badfn)
+ kindpats.sort()
self._files = _explicitfiles(kindpats)
self._prefix = _prefix(kindpats)