Mercurial > hg
changeset 32466:12e241b2713c
match: remove support for excludes from matcher class
The support is now provided by differencematcher() and still available
via the match() function.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 16 May 2017 22:15:42 -0700 |
parents | a83a7d27911e |
children | ad37c569ec81 |
files | mercurial/match.py tests/test-eolfilename.t tests/test-hgignore.t tests/test-walk.t |
diffstat | 4 files changed, 92 insertions(+), 112 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/match.py Tue May 16 16:36:48 2017 -0700 +++ b/mercurial/match.py Tue May 16 22:15:42 2017 -0700 @@ -142,12 +142,12 @@ kindpats.append((kind, pats, source)) return kindpats - m = matcher(root, cwd, normalize, patterns, include=include, exclude=None, + m = matcher(root, cwd, normalize, patterns, include=include, default=default, exact=exact, auditor=auditor, ctx=ctx, listsubrepos=listsubrepos, warn=warn, badfn=badfn) if exclude: - em = matcher(root, cwd, normalize, [], include=exclude, exclude=None, - default=default, exact=False, auditor=auditor, ctx=ctx, + em = matcher(root, cwd, normalize, [], include=exclude, default=default, + exact=False, auditor=auditor, ctx=ctx, listsubrepos=listsubrepos, warn=warn, badfn=None) m = differencematcher(m, em) return m @@ -305,25 +305,21 @@ class matcher(basematcher): def __init__(self, root, cwd, normalize, patterns, include=None, - exclude=None, default='glob', exact=False, auditor=None, - ctx=None, listsubrepos=False, warn=None, badfn=None): + default='glob', exact=False, auditor=None, ctx=None, + listsubrepos=False, warn=None, badfn=None): super(matcher, self).__init__(root, cwd, badfn) if include is None: include = [] - if exclude is None: - exclude = [] - self._anypats = bool(include or exclude) + self._anypats = bool(include) self._anyincludepats = False self._always = False - self._pathrestricted = bool(include or exclude or patterns) + self._pathrestricted = bool(include or patterns) self.patternspat = None self.includepat = None - self.excludepat = None - # roots are directories which are recursively included/excluded. + # roots are directories which are recursively included. self._includeroots = set() - self._excluderoots = set() # dirs are directories which are non-recursively included. self._includedirs = set() @@ -337,18 +333,6 @@ self._includeroots.update(roots) self._includedirs.update(dirs) matchfns.append(im) - if exclude: - kindpats = normalize(exclude, 'glob', root, cwd, auditor, warn) - self.excludepat, em = _buildmatch(ctx, kindpats, '(?:/|$)', - listsubrepos, root) - if not _anypats(kindpats): - # Only consider recursive excludes as such - if a non-recursive - # exclude is used, we must still recurse into the excluded - # directory, at least to find subdirectories. In such a case, - # the regex still won't match the non-recursively-excluded - # files. - self._excluderoots.update(_roots(kindpats)) - matchfns.append(lambda f: not em(f)) if exact: if isinstance(patterns, list): self._files = patterns @@ -388,11 +372,8 @@ def visitdir(self, dir): if self.prefix() and dir in self._fileset: return 'all' - if dir in self._excluderoots: - return False if self._includeroots or self._includedirs: if (not self._anyincludepats and - not self._excluderoots and dir in self._includeroots): # The condition above is essentially self.prefix() for includes return 'all' @@ -419,9 +400,8 @@ return self.matchfn == self.exact def __repr__(self): - return ('<matcher files=%r, patterns=%r, includes=%r, excludes=%r>' % - (self._files, self.patternspat, self.includepat, - self.excludepat)) + return ('<matcher files=%r, patterns=%r, includes=%r>' % + (self._files, self.patternspat, self.includepat)) class differencematcher(basematcher): '''Composes two matchers by matching if the first matches and the second
--- a/tests/test-eolfilename.t Tue May 16 16:36:48 2017 -0700 +++ b/tests/test-eolfilename.t Tue May 16 22:15:42 2017 -0700 @@ -33,7 +33,7 @@ [255] $ echo foo > "$A" $ hg debugwalk - matcher: <matcher files=[], patterns=None, includes=None, excludes=None> + matcher: <matcher files=[], patterns=None, includes=None> f he\r (no-eol) (esc) llo he\r (no-eol) (esc) llo
--- a/tests/test-hgignore.t Tue May 16 16:36:48 2017 -0700 +++ b/tests/test-hgignore.t Tue May 16 22:15:42 2017 -0700 @@ -164,7 +164,7 @@ A b.o $ hg debugignore - <matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*(?:/|$))', excludes=None> + <matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*(?:/|$))'> $ hg debugignore b.o b.o is ignored
--- a/tests/test-walk.t Tue May 16 16:36:48 2017 -0700 +++ b/tests/test-walk.t Tue May 16 22:15:42 2017 -0700 @@ -29,7 +29,7 @@ $ hg commit -m "commit #0" $ hg debugwalk - matcher: <matcher files=[], patterns=None, includes=None, excludes=None> + matcher: <matcher files=[], 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='(?:)', excludes=None> + matcher: <matcher files=[], 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, excludes=None> + matcher: <matcher files=[], 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, excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))', excludes=None>> + matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None>, m2=<matcher files=[], 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(?:/|$))', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'> f mammals/skunk skunk $ hg debugwalk -I 'glob:*k' - matcher: <matcher files=[], patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'> f mammals/skunk skunk $ hg debugwalk -I 'relglob:*k' - matcher: <matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))'> f beans/black ../beans/black f fenugreek ../fenugreek f mammals/skunk skunk $ hg debugwalk -I 'relglob:*k' . - matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes='(?:(?:|.*/)[^/]*k(?:/|$))', excludes=None> + matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes='(?:(?:|.*/)[^/]*k(?:/|$))'> f mammals/skunk skunk $ hg debugwalk -I 're:.*k$' - matcher: <matcher files=[], patterns=None, includes='(?:.*k$)', excludes=None> + matcher: <matcher files=[], 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$)', excludes=None> + matcher: <matcher files=[], 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(?:/|$))', excludes=None> + matcher: <matcher files=[], 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(?:/|$))', excludes=None> + matcher: <matcher files=[], 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, excludes=None> + matcher: <matcher files=[], patterns='(?:^[^/]+$)', includes=None> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -I 'rootfilesin:' - matcher: <matcher files=[], patterns=None, includes='(?:^[^/]+$)', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:^[^/]+$)'> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk 'rootfilesin:.' - matcher: <matcher files=[], patterns='(?:^[^/]+$)', includes=None, excludes=None> + matcher: <matcher files=[], patterns='(?:^[^/]+$)', includes=None> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -I 'rootfilesin:.' - matcher: <matcher files=[], patterns=None, includes='(?:^[^/]+$)', excludes=None> + matcher: <matcher files=[], 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, excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:^[^/]+$)', excludes=None>> + matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None>, m2=<matcher files=[], 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, excludes=None> + matcher: <matcher files=[], patterns='(?:^fennel/[^/]+$)', includes=None> $ hg debugwalk -I 'rootfilesin:fennel' - matcher: <matcher files=[], patterns=None, includes='(?:^fennel/[^/]+$)', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:^fennel/[^/]+$)'> $ hg debugwalk 'rootfilesin:skunk' - matcher: <matcher files=[], patterns='(?:^skunk/[^/]+$)', includes=None, excludes=None> + matcher: <matcher files=[], patterns='(?:^skunk/[^/]+$)', includes=None> $ hg debugwalk -I 'rootfilesin:skunk' - matcher: <matcher files=[], patterns=None, includes='(?:^skunk/[^/]+$)', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:^skunk/[^/]+$)'> $ hg debugwalk 'rootfilesin:beans' - matcher: <matcher files=[], patterns='(?:^beans/[^/]+$)', includes=None, excludes=None> + matcher: <matcher files=[], 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/[^/]+$)', excludes=None> + matcher: <matcher files=[], 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, excludes=None> + matcher: <matcher files=[], patterns='(?:^mammals/[^/]+$)', includes=None> f mammals/skunk skunk $ hg debugwalk -I 'rootfilesin:mammals' - matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk 'rootfilesin:mammals/' - matcher: <matcher files=[], patterns='(?:^mammals/[^/]+$)', includes=None, excludes=None> + matcher: <matcher files=[], patterns='(?:^mammals/[^/]+$)', includes=None> f mammals/skunk skunk $ hg debugwalk -I 'rootfilesin:mammals/' - matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk -X 'rootfilesin:mammals' - matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None, excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)', excludes=None>> + matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None>, m2=<matcher files=[], 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, excludes=None> + matcher: <matcher files=['mammals'], 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(?:/|$))', excludes=None> + matcher: <matcher files=[], 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, excludes=None> + matcher: <matcher files=['mammals/Procyonidae'], 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, excludes=None> + matcher: <matcher files=['mammals/Procyonidae'], 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, excludes=None> + matcher: <matcher files=['mammals'], 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, excludes=None> + matcher: <matcher files=['beans'], 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, excludes=None> + matcher: <matcher files=['mammals'], 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(?:/|$))', excludes=None> + matcher: <matcher files=[], 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(?:/|$))', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:(?:[^/]*|(?:b|m)[^/]*\\/[^/]*)k(?:/|$))'> f beans/black beans/black f fenugreek fenugreek f mammals/skunk mammals/skunk $ hg debugwalk -Ibeans mammals - matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes='(?:beans(?:/|$))', excludes=None> + matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes='(?:beans(?:/|$))'> $ hg debugwalk -Inon-existent - matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$))', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$))'> $ hg debugwalk -Inon-existent -Ibeans/black - matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))', excludes=None> + matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'> f beans/black beans/black $ hg debugwalk -Ibeans beans/black - matcher: <matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes='(?:beans(?:/|$))', excludes=None> + matcher: <matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes='(?:beans(?:/|$))'> f beans/black beans/black exact $ hg debugwalk -Ibeans/black beans - matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes='(?:beans\\/black(?:/|$))', excludes=None> + matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes='(?:beans\\/black(?:/|$))'> f beans/black beans/black $ hg debugwalk -Xbeans/black beans - matcher: <differencematcher m1=<matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None, excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))', excludes=None>> + matcher: <differencematcher m1=<matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None>, m2=<matcher files=[], 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(?:/|$))', excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))', excludes=None>> + matcher: <differencematcher m1=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>, m2=<matcher files=[], 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, excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))', excludes=None>> + matcher: <differencematcher m1=<matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher files=[], 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(?:/|$))', excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))', excludes=None>> + matcher: <differencematcher m1=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>> $ hg debugwalk -Xbeans beans/black - matcher: <differencematcher m1=<matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None, excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))', excludes=None>> + matcher: <differencematcher m1=<matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher files=[], 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(?:/|$))', excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))', excludes=None>> + matcher: <differencematcher m1=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>> $ hg debugwalk 'glob:mammals/../beans/b*' - matcher: <matcher files=['beans'], patterns='(?:beans\\/b[^/]*$)', includes=None, excludes=None> + matcher: <matcher files=['beans'], 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, excludes=None>, m2=<matcher files=[], patterns=None, includes='(?:[^/]*\\/Procyonidae(?:/|$))', excludes=None>> + matcher: <differencematcher m1=<matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:[^/]*\\/Procyonidae(?:/|$))'>> f mammals/skunk mammals/skunk $ hg debugwalk path:mammals - matcher: <matcher files=['mammals'], patterns='(?:^mammals(?:/|$))', includes=None, excludes=None> + matcher: <matcher files=['mammals'], 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, excludes=None> + matcher: <matcher files=['beans'], 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, excludes=None> + matcher: <matcher files=['.'], 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, excludes=None> + matcher: <matcher files=['.'], 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, excludes=None> + matcher: <matcher files=['glob'], 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, excludes=None> + matcher: <matcher files=['glob:glob'], 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, excludes=None> + matcher: <matcher files=['glob:glob'], 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, excludes=None> + matcher: <matcher files=['.'], 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, excludes=None> + matcher: <matcher files=['.'], 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, excludes=None> + matcher: <matcher files=['beans/black'], 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, excludes=None> + matcher: <matcher files=['beans/black'], patterns='(?:^beans\\/black(?:/|$))', includes=None> f beans/black beans/black exact $ hg debugwalk relglob:Procyonidae - matcher: <matcher files=['.'], patterns='(?:(?:|.*/)Procyonidae$)', includes=None, excludes=None> + matcher: <matcher files=['.'], patterns='(?:(?:|.*/)Procyonidae$)', includes=None> $ hg debugwalk 'relglob:Procyonidae/**' - matcher: <matcher files=['.'], patterns='(?:(?:|.*/)Procyonidae\\/.*$)', includes=None, excludes=None> + matcher: <matcher files=['.'], 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, excludes=None> + matcher: <matcher files=['.', 'fennel'], 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, excludes=None> + matcher: <matcher files=['beans', 'beans'], 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, excludes=None> + matcher: <matcher files=['.'], 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, excludes=None> + matcher: <matcher files=['.', 'fennel'], 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, excludes=None> + matcher: <matcher files=['.'], patterns='(?:j[^/]*$)', includes=None> $ hg debugwalk NOEXIST - matcher: <matcher files=['NOEXIST'], patterns='(?:NOEXIST(?:/|$))', includes=None, excludes=None> + matcher: <matcher files=['NOEXIST'], patterns='(?:NOEXIST(?:/|$))', includes=None> NOEXIST: * (glob) #if fifo $ mkfifo fifo $ hg debugwalk fifo - matcher: <matcher files=['fifo'], patterns='(?:fifo(?:/|$))', includes=None, excludes=None> + matcher: <matcher files=['fifo'], 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, excludes=None> + matcher: <matcher files=['fenugreek'], patterns='(?:fenugreek(?:/|$))', includes=None> f fenugreek fenugreek exact $ hg rm fenugreek $ hg debugwalk fenugreek - matcher: <matcher files=['fenugreek'], patterns='(?:fenugreek(?:/|$))', includes=None, excludes=None> + matcher: <matcher files=['fenugreek'], patterns='(?:fenugreek(?:/|$))', includes=None> f fenugreek fenugreek exact $ touch new $ hg debugwalk new - matcher: <matcher files=['new'], patterns='(?:new(?:/|$))', includes=None, excludes=None> + matcher: <matcher files=['new'], 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, excludes=None> + matcher: <matcher files=['ignored'], patterns='(?:ignored(?:/|$))', includes=None> $ hg debugwalk ignored/file - matcher: <matcher files=['ignored/file'], patterns='(?:ignored\\/file(?:/|$))', includes=None, excludes=None> + matcher: <matcher files=['ignored/file'], 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(?:/|$))', excludes=None> + matcher: <matcher files=[], 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(?:/|$))', excludes=None> + matcher: <matcher files=[], 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, excludes=None> + matcher: <matcher files=['mammals/skunk'], 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, excludes=None> + matcher: <matcher files=['mammals/skunk'], 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, excludes=None> + matcher: <matcher files=['mammals/skunk'], patterns='(?:mammals\\/skunk(?:/|$))', includes=None> f mammals/skunk mammals/skunk exact $ cd ..