Patchwork [5,of,9] match: remove support for exact matching from main matcher class

login
register
mail settings
Submitter via Mercurial-devel
Date May 26, 2017, 11:32 p.m.
Message ID <132a2515861d24d6da0f.1495841571@martinvonz.svl.corp.google.com>
Download mbox | patch
Permalink /patch/20944/
State Accepted
Headers show

Comments

via Mercurial-devel - May 26, 2017, 11:32 p.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 1495175979 25200
#      Thu May 18 23:39:39 2017 -0700
# Node ID 132a2515861d24d6da0fba8b598d8116b95f0e4b
# Parent  9f2b73c1ac41cd17c19cc7c3bf527816b4b72ab6
match: remove support for exact matching from main matcher class

Exact matching is now handled by the exactmatcher class.

We can safely remove _files from the __repr__() implementation,
because even though the field is set, the patternspat field is enough
for the representation to be unambiguous (which was not the case when
the matcher could handle exact matches).

Patch

diff --git a/mercurial/match.py b/mercurial/match.py
--- a/mercurial/match.py
+++ b/mercurial/match.py
@@ -146,17 +146,17 @@ 
         m = exactmatcher(root, cwd, patterns, badfn)
     else:
         m = matcher(root, cwd, normalize, patterns, include=None,
-                    default=default, exact=exact, auditor=auditor, ctx=ctx,
+                    default=default, auditor=auditor, ctx=ctx,
                     listsubrepos=listsubrepos, warn=warn, badfn=badfn)
     if include:
         im = matcher(root, cwd, normalize, [], include=include, default=default,
-                     exact=False, auditor=auditor, ctx=ctx,
-                     listsubrepos=listsubrepos, warn=warn, badfn=None)
+                     auditor=auditor, ctx=ctx, listsubrepos=listsubrepos,
+                     warn=warn, badfn=None)
         m = intersectmatchers(m, im)
     if exclude:
         em = matcher(root, cwd, normalize, [], include=exclude, default=default,
-                     exact=False, auditor=auditor, ctx=ctx,
-                     listsubrepos=listsubrepos, warn=warn, badfn=None)
+                     auditor=auditor, ctx=ctx, listsubrepos=listsubrepos,
+                     warn=warn, badfn=None)
         m = differencematcher(m, em)
     return m
 
@@ -314,7 +314,7 @@ 
 class matcher(basematcher):
 
     def __init__(self, root, cwd, normalize, patterns, include=None,
-                 default='glob', exact=False, auditor=None, ctx=None,
+                 default='glob', auditor=None, ctx=None,
                  listsubrepos=False, warn=None, badfn=None):
         super(matcher, self).__init__(root, cwd, badfn,
                                       relativeuipath=bool(include or patterns))
@@ -342,13 +342,7 @@ 
             self._includeroots.update(roots)
             self._includedirs.update(dirs)
             matchfns.append(im)
-        if exact:
-            if isinstance(patterns, list):
-                self._files = patterns
-            else:
-                self._files = list(patterns)
-            matchfns.append(self.exact)
-        elif patterns:
+        if patterns:
             kindpats = normalize(patterns, default, root, cwd, auditor, warn)
             if not _kindpatsalwaysmatch(kindpats):
                 self._files = _explicitfiles(kindpats)
@@ -402,12 +396,9 @@ 
     def always(self):
         return self._always
 
-    def isexact(self):
-        return self.matchfn == self.exact
-
     def __repr__(self):
-        return ('<matcher files=%r, patterns=%r, includes=%r>' %
-                (self._files, self.patternspat, self.includepat))
+        return ('<matcher patterns=%r, includes=%r>' %
+                (self.patternspat, self.includepat))
 
 class exactmatcher(basematcher):
     '''Matches the input files exactly. They are interpreted as paths, not
diff --git a/tests/test-eolfilename.t b/tests/test-eolfilename.t
--- a/tests/test-eolfilename.t
+++ b/tests/test-eolfilename.t
@@ -33,7 +33,7 @@ 
   [255]
   $ echo foo > "$A"
   $ hg debugwalk
-  matcher: <matcher files=[], patterns=None, includes=None>
+  matcher: <matcher patterns=None, includes=None>
   f  he\r (no-eol) (esc)
   llo  he\r (no-eol) (esc)
   llo
diff --git a/tests/test-hgignore.t b/tests/test-hgignore.t
--- a/tests/test-hgignore.t
+++ b/tests/test-hgignore.t
@@ -164,7 +164,7 @@ 
   A b.o
 
   $ hg debugignore
-  <matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*(?:/|$))'>
+  <matcher patterns=None, includes='(?:(?:|.*/)[^/]*(?:/|$))'>
 
   $ hg debugignore b.o
   b.o is ignored
diff --git a/tests/test-walk.t b/tests/test-walk.t
--- a/tests/test-walk.t
+++ b/tests/test-walk.t
@@ -29,7 +29,7 @@ 
   $ hg commit -m "commit #0"
 
   $ hg debugwalk
-  matcher: <matcher files=[], patterns=None, includes=None>
+  matcher: <matcher patterns=None, includes=None>
   f  beans/black                     beans/black
   f  beans/borlotti                  beans/borlotti
   f  beans/kidney                    beans/kidney
@@ -44,7 +44,7 @@ 
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   f  mammals/skunk                   mammals/skunk
   $ hg debugwalk -I.
-  matcher: <matcher files=[], patterns=None, includes='(?:)'>
+  matcher: <matcher patterns=None, includes='(?:)'>
   f  beans/black                     beans/black
   f  beans/borlotti                  beans/borlotti
   f  beans/kidney                    beans/kidney
@@ -61,7 +61,7 @@ 
 
   $ cd mammals
   $ hg debugwalk
-  matcher: <matcher files=[], patterns=None, includes=None>
+  matcher: <matcher patterns=None, includes=None>
   f  beans/black                     ../beans/black
   f  beans/borlotti                  ../beans/borlotti
   f  beans/kidney                    ../beans/kidney
@@ -76,7 +76,7 @@ 
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk -X ../beans
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes=None>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   f  fennel                          ../fennel
   f  fenugreek                       ../fenugreek
   f  fiddlehead                      ../fiddlehead
@@ -85,31 +85,31 @@ 
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk -I '*k'
-  matcher: <matcher files=[], patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'glob:*k'
-  matcher: <matcher files=[], patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'relglob:*k'
-  matcher: <matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))'>
   f  beans/black    ../beans/black
   f  fenugreek      ../fenugreek
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'relglob:*k' .
-  matcher: <intersectionmatcher m1=<matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))'>>
+  matcher: <intersectionmatcher m1=<matcher patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))'>>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 're:.*k$'
-  matcher: <matcher files=[], patterns=None, includes='(?:.*k$)'>
+  matcher: <matcher patterns=None, includes='(?:.*k$)'>
   f  beans/black    ../beans/black
   f  fenugreek      ../fenugreek
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'relre:.*k$'
-  matcher: <matcher files=[], patterns=None, includes='(?:.*.*k$)'>
+  matcher: <matcher patterns=None, includes='(?:.*.*k$)'>
   f  beans/black    ../beans/black
   f  fenugreek      ../fenugreek
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'path:beans'
-  matcher: <matcher files=[], patterns=None, includes='(?:^beans(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:^beans(?:/|$))'>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -117,7 +117,7 @@ 
   f  beans/pinto     ../beans/pinto
   f  beans/turtle    ../beans/turtle
   $ hg debugwalk -I 'relpath:detour/../../beans'
-  matcher: <matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:beans(?:/|$))'>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -126,27 +126,27 @@ 
   f  beans/turtle    ../beans/turtle
 
   $ hg debugwalk 'rootfilesin:'
-  matcher: <matcher files=[], patterns='(?:^[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^[^/]+$)', includes=None>
   f  fennel      ../fennel
   f  fenugreek   ../fenugreek
   f  fiddlehead  ../fiddlehead
   $ hg debugwalk -I 'rootfilesin:'
-  matcher: <matcher files=[], patterns=None, includes='(?:^[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^[^/]+$)'>
   f  fennel      ../fennel
   f  fenugreek   ../fenugreek
   f  fiddlehead  ../fiddlehead
   $ hg debugwalk 'rootfilesin:.'
-  matcher: <matcher files=[], patterns='(?:^[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^[^/]+$)', includes=None>
   f  fennel      ../fennel
   f  fenugreek   ../fenugreek
   f  fiddlehead  ../fiddlehead
   $ hg debugwalk -I 'rootfilesin:.'
-  matcher: <matcher files=[], patterns=None, includes='(?:^[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^[^/]+$)'>
   f  fennel      ../fennel
   f  fenugreek   ../fenugreek
   f  fiddlehead  ../fiddlehead
   $ hg debugwalk -X 'rootfilesin:'
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None>, m2=<matcher files=[], patterns=None, includes='(?:^[^/]+$)'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes=None>, m2=<matcher patterns=None, includes='(?:^[^/]+$)'>>
   f  beans/black                     ../beans/black
   f  beans/borlotti                  ../beans/borlotti
   f  beans/kidney                    ../beans/kidney
@@ -158,15 +158,15 @@ 
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk 'rootfilesin:fennel'
-  matcher: <matcher files=[], patterns='(?:^fennel/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^fennel/[^/]+$)', includes=None>
   $ hg debugwalk -I 'rootfilesin:fennel'
-  matcher: <matcher files=[], patterns=None, includes='(?:^fennel/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^fennel/[^/]+$)'>
   $ hg debugwalk 'rootfilesin:skunk'
-  matcher: <matcher files=[], patterns='(?:^skunk/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^skunk/[^/]+$)', includes=None>
   $ hg debugwalk -I 'rootfilesin:skunk'
-  matcher: <matcher files=[], patterns=None, includes='(?:^skunk/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^skunk/[^/]+$)'>
   $ hg debugwalk 'rootfilesin:beans'
-  matcher: <matcher files=[], patterns='(?:^beans/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^beans/[^/]+$)', includes=None>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -174,7 +174,7 @@ 
   f  beans/pinto     ../beans/pinto
   f  beans/turtle    ../beans/turtle
   $ hg debugwalk -I 'rootfilesin:beans'
-  matcher: <matcher files=[], patterns=None, includes='(?:^beans/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^beans/[^/]+$)'>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -182,19 +182,19 @@ 
   f  beans/pinto     ../beans/pinto
   f  beans/turtle    ../beans/turtle
   $ hg debugwalk 'rootfilesin:mammals'
-  matcher: <matcher files=[], patterns='(?:^mammals/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^mammals/[^/]+$)', includes=None>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'rootfilesin:mammals'
-  matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^mammals/[^/]+$)'>
   f  mammals/skunk  skunk
   $ hg debugwalk 'rootfilesin:mammals/'
-  matcher: <matcher files=[], patterns='(?:^mammals/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^mammals/[^/]+$)', includes=None>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'rootfilesin:mammals/'
-  matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^mammals/[^/]+$)'>
   f  mammals/skunk  skunk
   $ hg debugwalk -X 'rootfilesin:mammals'
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None>, m2=<matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes=None>, m2=<matcher patterns=None, includes='(?:^mammals/[^/]+$)'>>
   f  beans/black                     ../beans/black
   f  beans/borlotti                  ../beans/borlotti
   f  beans/kidney                    ../beans/kidney
@@ -209,31 +209,31 @@ 
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
 
   $ hg debugwalk .
-  matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk -I.
-  matcher: <matcher files=[], patterns=None, includes='(?:mammals(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:mammals(?:/|$))'>
   f  mammals/Procyonidae/cacomistle  Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk Procyonidae
-  matcher: <matcher files=['mammals/Procyonidae'], patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
 
   $ cd Procyonidae
   $ hg debugwalk .
-  matcher: <matcher files=['mammals/Procyonidae'], patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  cacomistle
   f  mammals/Procyonidae/coatimundi  coatimundi
   f  mammals/Procyonidae/raccoon     raccoon
   $ hg debugwalk ..
-  matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  cacomistle
   f  mammals/Procyonidae/coatimundi  coatimundi
   f  mammals/Procyonidae/raccoon     raccoon
@@ -241,7 +241,7 @@ 
   $ cd ..
 
   $ hg debugwalk ../beans
-  matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:beans(?:/|$))', includes=None>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -249,7 +249,7 @@ 
   f  beans/pinto     ../beans/pinto
   f  beans/turtle    ../beans/turtle
   $ hg debugwalk .
-  matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
@@ -263,7 +263,7 @@ 
   $ cd ..
 
   $ hg debugwalk -Ibeans
-  matcher: <matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:beans(?:/|$))'>
   f  beans/black     beans/black
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
@@ -271,56 +271,56 @@ 
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk -I '{*,{b,m}*/*}k'
-  matcher: <matcher files=[], patterns=None, includes='(?:(?:[^/]*|(?:b|m)[^/]*\\/[^/]*)k(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:(?:[^/]*|(?:b|m)[^/]*\\/[^/]*)k(?:/|$))'>
   f  beans/black    beans/black
   f  fenugreek      fenugreek
   f  mammals/skunk  mammals/skunk
   $ hg debugwalk -Ibeans mammals
-  matcher: <intersectionmatcher m1=<matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <intersectionmatcher m1=<matcher patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   $ hg debugwalk -Inon-existent
-  matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:non\\-existent(?:/|$))'>
   $ hg debugwalk -Inon-existent -Ibeans/black
-  matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'>
   f  beans/black  beans/black
   $ hg debugwalk -Ibeans beans/black
-  matcher: <intersectionmatcher m1=<matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <intersectionmatcher m1=<matcher patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   f  beans/black  beans/black  exact
   $ hg debugwalk -Ibeans/black beans
-  matcher: <intersectionmatcher m1=<matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <intersectionmatcher m1=<matcher patterns='(?:beans(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   f  beans/black  beans/black
   $ hg debugwalk -Xbeans/black beans
-  matcher: <differencematcher m1=<matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns='(?:beans(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
   f  beans/navy      beans/navy
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk -Xbeans/black -Ibeans
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes='(?:beans(?:/|$))'>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
   f  beans/navy      beans/navy
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk -Xbeans/black beans/black
-  matcher: <differencematcher m1=<matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   f  beans/black  beans/black  exact
   $ hg debugwalk -Xbeans/black -Ibeans/black
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   $ hg debugwalk -Xbeans beans/black
-  matcher: <differencematcher m1=<matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   f  beans/black  beans/black  exact
   $ hg debugwalk -Xbeans -Ibeans/black
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   $ hg debugwalk 'glob:mammals/../beans/b*'
-  matcher: <matcher files=['beans'], patterns='(?:beans\\/b[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:beans\\/b[^/]*$)', includes=None>
   f  beans/black     beans/black
   f  beans/borlotti  beans/borlotti
   $ hg debugwalk '-X*/Procyonidae' mammals
-  matcher: <differencematcher m1=<matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:[^/]*\\/Procyonidae(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:[^/]*\\/Procyonidae(?:/|$))'>>
   f  mammals/skunk  mammals/skunk
   $ hg debugwalk path:mammals
-  matcher: <matcher files=['mammals'], patterns='(?:^mammals(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:^mammals(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
@@ -347,7 +347,7 @@ 
 Test absolute paths:
 
   $ hg debugwalk `pwd`/beans
-  matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:beans(?:/|$))', includes=None>
   f  beans/black     beans/black
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
@@ -361,7 +361,7 @@ 
 Test patterns:
 
   $ hg debugwalk glob:\*
-  matcher: <matcher files=['.'], patterns='(?:[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:[^/]*$)', includes=None>
   f  fennel      fennel
   f  fenugreek   fenugreek
   f  fiddlehead  fiddlehead
@@ -371,19 +371,19 @@ 
   adding glob:glob
   warning: filename contains ':', which is reserved on Windows: 'glob:glob'
   $ hg debugwalk glob:\*
-  matcher: <matcher files=['.'], patterns='(?:[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:[^/]*$)', includes=None>
   f  fennel      fennel
   f  fenugreek   fenugreek
   f  fiddlehead  fiddlehead
   f  glob:glob   glob:glob
   $ hg debugwalk glob:glob
-  matcher: <matcher files=['glob'], patterns='(?:glob$)', includes=None>
+  matcher: <matcher patterns='(?:glob$)', includes=None>
   glob: No such file or directory
   $ hg debugwalk glob:glob:glob
-  matcher: <matcher files=['glob:glob'], patterns='(?:glob\\:glob$)', includes=None>
+  matcher: <matcher patterns='(?:glob\\:glob$)', includes=None>
   f  glob:glob  glob:glob  exact
   $ hg debugwalk path:glob:glob
-  matcher: <matcher files=['glob:glob'], patterns='(?:^glob\\:glob(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:^glob\\:glob(?:/|$))', includes=None>
   f  glob:glob  glob:glob  exact
   $ rm glob:glob
   $ hg addremove
@@ -391,38 +391,38 @@ 
 #endif
 
   $ hg debugwalk 'glob:**e'
-  matcher: <matcher files=['.'], patterns='(?:.*e$)', includes=None>
+  matcher: <matcher patterns='(?:.*e$)', includes=None>
   f  beans/turtle                    beans/turtle
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
 
   $ hg debugwalk 're:.*[kb]$'
-  matcher: <matcher files=['.'], patterns='(?:.*[kb]$)', includes=None>
+  matcher: <matcher patterns='(?:.*[kb]$)', includes=None>
   f  beans/black    beans/black
   f  fenugreek      fenugreek
   f  mammals/skunk  mammals/skunk
 
   $ hg debugwalk path:beans/black
-  matcher: <matcher files=['beans/black'], patterns='(?:^beans\\/black(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:^beans\\/black(?:/|$))', includes=None>
   f  beans/black  beans/black  exact
   $ hg debugwalk path:beans//black
-  matcher: <matcher files=['beans/black'], patterns='(?:^beans\\/black(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:^beans\\/black(?:/|$))', includes=None>
   f  beans/black  beans/black  exact
 
   $ hg debugwalk relglob:Procyonidae
-  matcher: <matcher files=['.'], patterns='(?:(?:|.*/)Procyonidae$)', includes=None>
+  matcher: <matcher patterns='(?:(?:|.*/)Procyonidae$)', includes=None>
   $ hg debugwalk 'relglob:Procyonidae/**'
-  matcher: <matcher files=['.'], patterns='(?:(?:|.*/)Procyonidae\\/.*$)', includes=None>
+  matcher: <matcher patterns='(?:(?:|.*/)Procyonidae\\/.*$)', includes=None>
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   $ hg debugwalk 'relglob:Procyonidae/**' fennel
-  matcher: <matcher files=['.', 'fennel'], patterns='(?:(?:|.*/)Procyonidae\\/.*$|fennel(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:(?:|.*/)Procyonidae\\/.*$|fennel(?:/|$))', includes=None>
   f  fennel                          fennel                          exact
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   $ hg debugwalk beans 'glob:beans/*'
-  matcher: <matcher files=['beans', 'beans'], patterns='(?:beans(?:/|$)|beans\\/[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:beans(?:/|$)|beans\\/[^/]*$)', includes=None>
   f  beans/black     beans/black
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
@@ -430,78 +430,78 @@ 
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk 'glob:mamm**'
-  matcher: <matcher files=['.'], patterns='(?:mamm.*$)', includes=None>
+  matcher: <matcher patterns='(?:mamm.*$)', includes=None>
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   f  mammals/skunk                   mammals/skunk
   $ hg debugwalk 'glob:mamm**' fennel
-  matcher: <matcher files=['.', 'fennel'], patterns='(?:mamm.*$|fennel(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mamm.*$|fennel(?:/|$))', includes=None>
   f  fennel                          fennel                          exact
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   f  mammals/skunk                   mammals/skunk
   $ hg debugwalk 'glob:j*'
-  matcher: <matcher files=['.'], patterns='(?:j[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:j[^/]*$)', includes=None>
   $ hg debugwalk NOEXIST
-  matcher: <matcher files=['NOEXIST'], patterns='(?:NOEXIST(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:NOEXIST(?:/|$))', includes=None>
   NOEXIST: * (glob)
 
 #if fifo
   $ mkfifo fifo
   $ hg debugwalk fifo
-  matcher: <matcher files=['fifo'], patterns='(?:fifo(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:fifo(?:/|$))', includes=None>
   fifo: unsupported file type (type is fifo)
 #endif
 
   $ rm fenugreek
   $ hg debugwalk fenugreek
-  matcher: <matcher files=['fenugreek'], patterns='(?:fenugreek(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:fenugreek(?:/|$))', includes=None>
   f  fenugreek  fenugreek  exact
   $ hg rm fenugreek
   $ hg debugwalk fenugreek
-  matcher: <matcher files=['fenugreek'], patterns='(?:fenugreek(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:fenugreek(?:/|$))', includes=None>
   f  fenugreek  fenugreek  exact
   $ touch new
   $ hg debugwalk new
-  matcher: <matcher files=['new'], patterns='(?:new(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:new(?:/|$))', includes=None>
   f  new  new  exact
 
   $ mkdir ignored
   $ touch ignored/file
   $ echo '^ignored$' > .hgignore
   $ hg debugwalk ignored
-  matcher: <matcher files=['ignored'], patterns='(?:ignored(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:ignored(?:/|$))', includes=None>
   $ hg debugwalk ignored/file
-  matcher: <matcher files=['ignored/file'], patterns='(?:ignored\\/file(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:ignored\\/file(?:/|$))', includes=None>
   f  ignored/file  ignored/file  exact
 
 Test listfile and listfile0
 
   $ $PYTHON -c "file('listfile0', 'wb').write('fenugreek\0new\0')"
   $ hg debugwalk -I 'listfile0:listfile0'
-  matcher: <matcher files=[], patterns=None, includes='(?:fenugreek(?:/|$)|new(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:fenugreek(?:/|$)|new(?:/|$))'>
   f  fenugreek  fenugreek
   f  new        new
   $ $PYTHON -c "file('listfile', 'wb').write('fenugreek\nnew\r\nmammals/skunk\n')"
   $ hg debugwalk -I 'listfile:listfile'
-  matcher: <matcher files=[], patterns=None, includes='(?:fenugreek(?:/|$)|new(?:/|$)|mammals\\/skunk(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:fenugreek(?:/|$)|new(?:/|$)|mammals\\/skunk(?:/|$))'>
   f  fenugreek      fenugreek
   f  mammals/skunk  mammals/skunk
   f  new            new
 
   $ cd ..
   $ hg debugwalk -R t t/mammals/skunk
-  matcher: <matcher files=['mammals/skunk'], patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
   f  mammals/skunk  t/mammals/skunk  exact
   $ mkdir t2
   $ cd t2
   $ hg debugwalk -R ../t ../t/mammals/skunk
-  matcher: <matcher files=['mammals/skunk'], patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
   f  mammals/skunk  ../t/mammals/skunk  exact
   $ hg debugwalk --cwd ../t mammals/skunk
-  matcher: <matcher files=['mammals/skunk'], patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
   f  mammals/skunk  mammals/skunk  exact
 
   $ cd ..