Mercurial > hg-stable
changeset 32537:2ba4d3b74ba8
match: remove support for includes from patternmatcher
Includes (and excludes) are now delegated to the includematcher.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 19 May 2017 11:44:05 -0700 |
parents | 361808a2b0b8 |
children | 05a16c19967e |
files | mercurial/match.py tests/test-eolfilename.t tests/test-walk.t |
diffstat | 3 files changed, 65 insertions(+), 96 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/match.py Mon May 22 23:31:15 2017 -0700 +++ b/mercurial/match.py Fri May 19 11:44:05 2017 -0700 @@ -145,9 +145,9 @@ if exact: m = exactmatcher(root, cwd, patterns, badfn) else: - m = patternmatcher(root, cwd, normalize, patterns, include=None, - default=default, auditor=auditor, ctx=ctx, - listsubrepos=listsubrepos, warn=warn, badfn=badfn) + m = patternmatcher(root, cwd, normalize, patterns, default=default, + auditor=auditor, ctx=ctx, listsubrepos=listsubrepos, + warn=warn, badfn=badfn) if include: im = includematcher(root, cwd, normalize, include, auditor=auditor, ctx=ctx, listsubrepos=listsubrepos, warn=warn, @@ -313,36 +313,17 @@ class patternmatcher(basematcher): - def __init__(self, root, cwd, normalize, patterns, include=None, - default='glob', auditor=None, ctx=None, - listsubrepos=False, warn=None, badfn=None): + def __init__(self, root, cwd, normalize, patterns, default='glob', + auditor=None, ctx=None, listsubrepos=False, warn=None, + badfn=None): super(patternmatcher, self).__init__(root, cwd, badfn, - relativeuipath=bool(include or - patterns)) - if include is None: - include = [] + relativeuipath=bool(patterns)) - self._anypats = bool(include) - self._anyincludepats = False + self._anypats = False self._always = False self.patternspat = None - self.includepat = None - - # roots are directories which are recursively included. - self._includeroots = set() - # dirs are directories which are non-recursively included. - self._includedirs = set() matchfns = [] - if include: - kindpats = normalize(include, 'glob', root, cwd, auditor, warn) - self.includepat, im = _buildmatch(ctx, kindpats, '(?:/|$)', - listsubrepos, root) - self._anyincludepats = _anypats(kindpats) - roots, dirs = _rootsanddirs(kindpats) - self._includeroots.update(roots) - self._includedirs.update(dirs) - matchfns.append(im) if patterns: kindpats = normalize(patterns, default, root, cwd, auditor, warn) if not _kindpatsalwaysmatch(kindpats): @@ -373,17 +354,6 @@ def visitdir(self, dir): if self.prefix() and dir in self._fileset: return 'all' - if self._includeroots or self._includedirs: - if (not self._anyincludepats and - dir in self._includeroots): - # The condition above is essentially self.prefix() for includes - return 'all' - if ('.' not in self._includeroots and - dir not in self._includeroots and - dir not in self._includedirs and - not any(parent in self._includeroots - for parent in util.finddirs(dir))): - return False return (not self._fileset or '.' in self._fileset or dir in self._fileset or @@ -398,8 +368,7 @@ return self._always def __repr__(self): - return ('<patternmatcher patterns=%r, includes=%r>' % - (self.patternspat, self.includepat)) + return ('<patternmatcher patterns=%r>' % self.patternspat) class includematcher(basematcher):
--- a/tests/test-eolfilename.t Mon May 22 23:31:15 2017 -0700 +++ b/tests/test-eolfilename.t Fri May 19 11:44:05 2017 -0700 @@ -33,7 +33,7 @@ [255] $ echo foo > "$A" $ hg debugwalk - matcher: <patternmatcher patterns=None, includes=None> + matcher: <patternmatcher patterns=None> f he\r (no-eol) (esc) llo he\r (no-eol) (esc) llo
--- a/tests/test-walk.t Mon May 22 23:31:15 2017 -0700 +++ b/tests/test-walk.t Fri May 19 11:44:05 2017 -0700 @@ -29,7 +29,7 @@ $ hg commit -m "commit #0" $ hg debugwalk - matcher: <patternmatcher patterns=None, includes=None> + matcher: <patternmatcher patterns=None> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -61,7 +61,7 @@ $ cd mammals $ hg debugwalk - matcher: <patternmatcher patterns=None, includes=None> + matcher: <patternmatcher patterns=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=<patternmatcher patterns=None, includes=None>, m2=<includematcher includes='(?:beans(?:/|$))'>> + matcher: <differencematcher m1=<patternmatcher patterns=None>, m2=<includematcher includes='(?:beans(?:/|$))'>> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead @@ -96,7 +96,7 @@ f fenugreek ../fenugreek f mammals/skunk skunk $ hg debugwalk -I 'relglob:*k' . - matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:mammals(?:/|$))', includes=None>, m2=<includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>> + matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:mammals(?:/|$))'>, m2=<includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>> f mammals/skunk skunk $ hg debugwalk -I 're:.*k$' matcher: <includematcher includes='(?:.*k$)'> @@ -126,7 +126,7 @@ f beans/turtle ../beans/turtle $ hg debugwalk 'rootfilesin:' - matcher: <patternmatcher patterns='(?:^[^/]+$)', includes=None> + matcher: <patternmatcher patterns='(?:^[^/]+$)'> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead @@ -136,7 +136,7 @@ f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk 'rootfilesin:.' - matcher: <patternmatcher patterns='(?:^[^/]+$)', includes=None> + matcher: <patternmatcher patterns='(?:^[^/]+$)'> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead @@ -146,7 +146,7 @@ f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -X 'rootfilesin:' - matcher: <differencematcher m1=<patternmatcher patterns=None, includes=None>, m2=<includematcher includes='(?:^[^/]+$)'>> + matcher: <differencematcher m1=<patternmatcher patterns=None>, m2=<includematcher 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: <patternmatcher patterns='(?:^fennel/[^/]+$)', includes=None> + matcher: <patternmatcher patterns='(?:^fennel/[^/]+$)'> $ hg debugwalk -I 'rootfilesin:fennel' matcher: <includematcher includes='(?:^fennel/[^/]+$)'> $ hg debugwalk 'rootfilesin:skunk' - matcher: <patternmatcher patterns='(?:^skunk/[^/]+$)', includes=None> + matcher: <patternmatcher patterns='(?:^skunk/[^/]+$)'> $ hg debugwalk -I 'rootfilesin:skunk' matcher: <includematcher includes='(?:^skunk/[^/]+$)'> $ hg debugwalk 'rootfilesin:beans' - matcher: <patternmatcher patterns='(?:^beans/[^/]+$)', includes=None> + matcher: <patternmatcher patterns='(?:^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: <patternmatcher patterns='(?:^mammals/[^/]+$)', includes=None> + matcher: <patternmatcher patterns='(?:^mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk -I 'rootfilesin:mammals' matcher: <includematcher includes='(?:^mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk 'rootfilesin:mammals/' - matcher: <patternmatcher patterns='(?:^mammals/[^/]+$)', includes=None> + matcher: <patternmatcher patterns='(?:^mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk -I 'rootfilesin:mammals/' matcher: <includematcher includes='(?:^mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk -X 'rootfilesin:mammals' - matcher: <differencematcher m1=<patternmatcher patterns=None, includes=None>, m2=<includematcher includes='(?:^mammals/[^/]+$)'>> + matcher: <differencematcher m1=<patternmatcher patterns=None>, m2=<includematcher includes='(?:^mammals/[^/]+$)'>> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -209,7 +209,7 @@ f mammals/Procyonidae/raccoon Procyonidae/raccoon $ hg debugwalk . - matcher: <patternmatcher patterns='(?:mammals(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:mammals(?:/|$))'> f mammals/Procyonidae/cacomistle Procyonidae/cacomistle f mammals/Procyonidae/coatimundi Procyonidae/coatimundi f mammals/Procyonidae/raccoon Procyonidae/raccoon @@ -221,19 +221,19 @@ f mammals/Procyonidae/raccoon Procyonidae/raccoon f mammals/skunk skunk $ hg debugwalk Procyonidae - matcher: <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))'> f mammals/Procyonidae/cacomistle Procyonidae/cacomistle f mammals/Procyonidae/coatimundi Procyonidae/coatimundi f mammals/Procyonidae/raccoon Procyonidae/raccoon $ cd Procyonidae $ hg debugwalk . - matcher: <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))'> f mammals/Procyonidae/cacomistle cacomistle f mammals/Procyonidae/coatimundi coatimundi f mammals/Procyonidae/raccoon raccoon $ hg debugwalk .. - matcher: <patternmatcher patterns='(?:mammals(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:mammals(?:/|$))'> f mammals/Procyonidae/cacomistle cacomistle f mammals/Procyonidae/coatimundi coatimundi f mammals/Procyonidae/raccoon raccoon @@ -241,7 +241,7 @@ $ cd .. $ hg debugwalk ../beans - matcher: <patternmatcher patterns='(?:beans(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:beans(?:/|$))'> 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: <patternmatcher patterns='(?:mammals(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:mammals(?:/|$))'> f mammals/Procyonidae/cacomistle Procyonidae/cacomistle f mammals/Procyonidae/coatimundi Procyonidae/coatimundi f mammals/Procyonidae/raccoon Procyonidae/raccoon @@ -276,20 +276,20 @@ f fenugreek fenugreek f mammals/skunk mammals/skunk $ hg debugwalk -Ibeans mammals - matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:mammals(?:/|$))', includes=None>, m2=<includematcher includes='(?:beans(?:/|$))'>> + matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:mammals(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> $ hg debugwalk -Inon-existent matcher: <includematcher includes='(?:non\\-existent(?:/|$))'> $ hg debugwalk -Inon-existent -Ibeans/black matcher: <includematcher includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'> f beans/black beans/black $ hg debugwalk -Ibeans beans/black - matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<includematcher includes='(?:beans(?:/|$))'>> + matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> f beans/black beans/black exact $ hg debugwalk -Ibeans/black beans - matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:beans(?:/|$))', includes=None>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> + matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:beans(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> f beans/black beans/black $ hg debugwalk -Xbeans/black beans - matcher: <differencematcher m1=<patternmatcher patterns='(?:beans(?:/|$))', includes=None>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> + matcher: <differencematcher m1=<patternmatcher patterns='(?:beans(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> f beans/borlotti beans/borlotti f beans/kidney beans/kidney f beans/navy beans/navy @@ -303,24 +303,24 @@ f beans/pinto beans/pinto f beans/turtle beans/turtle $ hg debugwalk -Xbeans/black beans/black - matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> + matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> f beans/black beans/black exact $ hg debugwalk -Xbeans/black -Ibeans/black matcher: <differencematcher m1=<includematcher includes='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> $ hg debugwalk -Xbeans beans/black - matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<includematcher includes='(?:beans(?:/|$))'>> + matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> f beans/black beans/black exact $ hg debugwalk -Xbeans -Ibeans/black matcher: <differencematcher m1=<includematcher includes='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> $ hg debugwalk 'glob:mammals/../beans/b*' - matcher: <patternmatcher patterns='(?:beans\\/b[^/]*$)', includes=None> + matcher: <patternmatcher patterns='(?:beans\\/b[^/]*$)'> f beans/black beans/black f beans/borlotti beans/borlotti $ hg debugwalk '-X*/Procyonidae' mammals - matcher: <differencematcher m1=<patternmatcher patterns='(?:mammals(?:/|$))', includes=None>, m2=<includematcher includes='(?:[^/]*\\/Procyonidae(?:/|$))'>> + matcher: <differencematcher m1=<patternmatcher patterns='(?:mammals(?:/|$))'>, m2=<includematcher includes='(?:[^/]*\\/Procyonidae(?:/|$))'>> f mammals/skunk mammals/skunk $ hg debugwalk path:mammals - matcher: <patternmatcher patterns='(?:^mammals(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:^mammals(?:/|$))'> 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: <patternmatcher patterns='(?:beans(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:beans(?:/|$))'> 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: <patternmatcher patterns='(?:[^/]*$)', includes=None> + matcher: <patternmatcher patterns='(?:[^/]*$)'> 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: <patternmatcher patterns='(?:[^/]*$)', includes=None> + matcher: <patternmatcher patterns='(?:[^/]*$)'> f fennel fennel f fenugreek fenugreek f fiddlehead fiddlehead f glob:glob glob:glob $ hg debugwalk glob:glob - matcher: <patternmatcher patterns='(?:glob$)', includes=None> + matcher: <patternmatcher patterns='(?:glob$)'> glob: No such file or directory $ hg debugwalk glob:glob:glob - matcher: <patternmatcher patterns='(?:glob\\:glob$)', includes=None> + matcher: <patternmatcher patterns='(?:glob\\:glob$)'> f glob:glob glob:glob exact $ hg debugwalk path:glob:glob - matcher: <patternmatcher patterns='(?:^glob\\:glob(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:^glob\\:glob(?:/|$))'> f glob:glob glob:glob exact $ rm glob:glob $ hg addremove @@ -391,38 +391,38 @@ #endif $ hg debugwalk 'glob:**e' - matcher: <patternmatcher patterns='(?:.*e$)', includes=None> + matcher: <patternmatcher patterns='(?:.*e$)'> f beans/turtle beans/turtle f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle $ hg debugwalk 're:.*[kb]$' - matcher: <patternmatcher patterns='(?:.*[kb]$)', includes=None> + matcher: <patternmatcher patterns='(?:.*[kb]$)'> f beans/black beans/black f fenugreek fenugreek f mammals/skunk mammals/skunk $ hg debugwalk path:beans/black - matcher: <patternmatcher patterns='(?:^beans\\/black(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:^beans\\/black(?:/|$))'> f beans/black beans/black exact $ hg debugwalk path:beans//black - matcher: <patternmatcher patterns='(?:^beans\\/black(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:^beans\\/black(?:/|$))'> f beans/black beans/black exact $ hg debugwalk relglob:Procyonidae - matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae$)', includes=None> + matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae$)'> $ hg debugwalk 'relglob:Procyonidae/**' - matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$)', includes=None> + matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$)'> 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: <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$|fennel(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$|fennel(?:/|$))'> 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: <patternmatcher patterns='(?:beans(?:/|$)|beans\\/[^/]*$)', includes=None> + matcher: <patternmatcher patterns='(?:beans(?:/|$)|beans\\/[^/]*$)'> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -430,51 +430,51 @@ f beans/pinto beans/pinto f beans/turtle beans/turtle $ hg debugwalk 'glob:mamm**' - matcher: <patternmatcher patterns='(?:mamm.*$)', includes=None> + matcher: <patternmatcher patterns='(?:mamm.*$)'> 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: <patternmatcher patterns='(?:mamm.*$|fennel(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:mamm.*$|fennel(?:/|$))'> 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: <patternmatcher patterns='(?:j[^/]*$)', includes=None> + matcher: <patternmatcher patterns='(?:j[^/]*$)'> $ hg debugwalk NOEXIST - matcher: <patternmatcher patterns='(?:NOEXIST(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:NOEXIST(?:/|$))'> NOEXIST: * (glob) #if fifo $ mkfifo fifo $ hg debugwalk fifo - matcher: <patternmatcher patterns='(?:fifo(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:fifo(?:/|$))'> fifo: unsupported file type (type is fifo) #endif $ rm fenugreek $ hg debugwalk fenugreek - matcher: <patternmatcher patterns='(?:fenugreek(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:fenugreek(?:/|$))'> f fenugreek fenugreek exact $ hg rm fenugreek $ hg debugwalk fenugreek - matcher: <patternmatcher patterns='(?:fenugreek(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:fenugreek(?:/|$))'> f fenugreek fenugreek exact $ touch new $ hg debugwalk new - matcher: <patternmatcher patterns='(?:new(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:new(?:/|$))'> f new new exact $ mkdir ignored $ touch ignored/file $ echo '^ignored$' > .hgignore $ hg debugwalk ignored - matcher: <patternmatcher patterns='(?:ignored(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:ignored(?:/|$))'> $ hg debugwalk ignored/file - matcher: <patternmatcher patterns='(?:ignored\\/file(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:ignored\\/file(?:/|$))'> f ignored/file ignored/file exact Test listfile and listfile0 @@ -493,15 +493,15 @@ $ cd .. $ hg debugwalk -R t t/mammals/skunk - matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'> f mammals/skunk t/mammals/skunk exact $ mkdir t2 $ cd t2 $ hg debugwalk -R ../t ../t/mammals/skunk - matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'> f mammals/skunk ../t/mammals/skunk exact $ hg debugwalk --cwd ../t mammals/skunk - matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))', includes=None> + matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'> f mammals/skunk mammals/skunk exact $ cd ..