Mercurial > hg-stable
changeset 38275:dbf31732ef64
debugwalk: pretty-print nested matcher
While porting filesets to composition of matchers, I found the original
one-liner was hard to read.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 10 Jun 2018 11:55:52 +0900 |
parents | 7c3a59e2971b |
children | fbb2eddea4d2 |
files | mercurial/debugcommands.py tests/test-eolfilename.t tests/test-narrow-commit.t tests/test-walk.t |
diffstat | 4 files changed, 209 insertions(+), 87 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/debugcommands.py Sun Jun 10 11:53:56 2018 +0900 +++ b/mercurial/debugcommands.py Sun Jun 10 11:55:52 2018 +0900 @@ -2543,7 +2543,7 @@ opts = pycompat.byteskwargs(opts) m = scmutil.match(repo[None], pats, opts) if ui.verbose: - ui.write(('matcher: %r\n' % m)) + ui.write(('* matcher:\n'), stringutil.prettyrepr(m), '\n') items = list(repo[None].walk(m)) if not items: return
--- a/tests/test-eolfilename.t Sun Jun 10 11:53:56 2018 +0900 +++ b/tests/test-eolfilename.t Sun Jun 10 11:55:52 2018 +0900 @@ -33,7 +33,8 @@ [255] $ echo foo > "$A" $ hg debugwalk -v - matcher: <alwaysmatcher> + * matcher: + <alwaysmatcher> f he\r (no-eol) (esc) llo he\r (no-eol) (esc) llo
--- a/tests/test-narrow-commit.t Sun Jun 10 11:53:56 2018 +0900 +++ b/tests/test-narrow-commit.t Sun Jun 10 11:55:52 2018 +0900 @@ -50,7 +50,8 @@ $ mkdir outside $ touch outside/f1 $ hg debugwalk -v -I 'relglob:f1' - matcher: <includematcher includes='(?:(?:|.*/)f1(?:/|$))'> + * matcher: + <includematcher includes='(?:(?:|.*/)f1(?:/|$))'> f inside/f1 inside/f1 $ hg add outside/f1 abort: cannot track 'outside/f1' - it is outside the narrow clone
--- a/tests/test-walk.t Sun Jun 10 11:53:56 2018 +0900 +++ b/tests/test-walk.t Sun Jun 10 11:55:52 2018 +0900 @@ -29,7 +29,8 @@ $ hg commit -m "commit #0" $ hg debugwalk -v - matcher: <alwaysmatcher> + * matcher: + <alwaysmatcher> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -44,7 +45,8 @@ f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon f mammals/skunk mammals/skunk $ hg debugwalk -v -I. - matcher: <includematcher includes='(?:)'> + * matcher: + <includematcher includes='(?:)'> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -61,7 +63,8 @@ $ cd mammals $ hg debugwalk -v - matcher: <alwaysmatcher> + * matcher: + <alwaysmatcher> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -76,7 +79,10 @@ f mammals/Procyonidae/raccoon Procyonidae/raccoon f mammals/skunk skunk $ hg debugwalk -v -X ../beans - matcher: <differencematcher m1=<alwaysmatcher>, m2=<includematcher includes='(?:beans(?:/|$))'>> + * matcher: + <differencematcher m1= + <alwaysmatcher>, m2= + <includematcher includes='(?:beans(?:/|$))'>> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead @@ -85,31 +91,40 @@ f mammals/Procyonidae/raccoon Procyonidae/raccoon f mammals/skunk skunk $ hg debugwalk -v -I '*k' - matcher: <includematcher includes='(?:mammals\\/[^/]*k(?:/|$))'> + * matcher: + <includematcher includes='(?:mammals\\/[^/]*k(?:/|$))'> f mammals/skunk skunk $ hg debugwalk -v -I 'glob:*k' - matcher: <includematcher includes='(?:mammals\\/[^/]*k(?:/|$))'> + * matcher: + <includematcher includes='(?:mammals\\/[^/]*k(?:/|$))'> f mammals/skunk skunk $ hg debugwalk -v -I 'relglob:*k' - matcher: <includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'> + * matcher: + <includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'> f beans/black ../beans/black f fenugreek ../fenugreek f mammals/skunk skunk $ hg debugwalk -v -I 'relglob:*k' . - matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:mammals(?:/|$))'>, m2=<includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>> + * matcher: + <intersectionmatcher m1= + <patternmatcher patterns='(?:mammals(?:/|$))'>, m2= + <includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>> f mammals/skunk skunk $ hg debugwalk -v -I 're:.*k$' - matcher: <includematcher includes='(?:.*k$)'> + * matcher: + <includematcher includes='(?:.*k$)'> f beans/black ../beans/black f fenugreek ../fenugreek f mammals/skunk skunk $ hg debugwalk -v -I 'relre:.*k$' - matcher: <includematcher includes='(?:.*.*k$)'> + * matcher: + <includematcher includes='(?:.*.*k$)'> f beans/black ../beans/black f fenugreek ../fenugreek f mammals/skunk skunk $ hg debugwalk -v -I 'path:beans' - matcher: <includematcher includes='(?:beans(?:/|$))'> + * matcher: + <includematcher includes='(?:beans(?:/|$))'> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -117,7 +132,8 @@ f beans/pinto ../beans/pinto f beans/turtle ../beans/turtle $ hg debugwalk -v -I 'relpath:detour/../../beans' - matcher: <includematcher includes='(?:beans(?:/|$))'> + * matcher: + <includematcher includes='(?:beans(?:/|$))'> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -126,27 +142,34 @@ f beans/turtle ../beans/turtle $ hg debugwalk -v 'rootfilesin:' - matcher: <patternmatcher patterns='(?:[^/]+$)'> + * matcher: + <patternmatcher patterns='(?:[^/]+$)'> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -v -I 'rootfilesin:' - matcher: <includematcher includes='(?:[^/]+$)'> + * matcher: + <includematcher includes='(?:[^/]+$)'> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -v 'rootfilesin:.' - matcher: <patternmatcher patterns='(?:[^/]+$)'> + * matcher: + <patternmatcher patterns='(?:[^/]+$)'> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -v -I 'rootfilesin:.' - matcher: <includematcher includes='(?:[^/]+$)'> + * matcher: + <includematcher includes='(?:[^/]+$)'> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -v -X 'rootfilesin:' - matcher: <differencematcher m1=<alwaysmatcher>, m2=<includematcher includes='(?:[^/]+$)'>> + * matcher: + <differencematcher m1= + <alwaysmatcher>, m2= + <includematcher includes='(?:[^/]+$)'>> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -158,15 +181,20 @@ f mammals/Procyonidae/raccoon Procyonidae/raccoon f mammals/skunk skunk $ hg debugwalk -v 'rootfilesin:fennel' - matcher: <patternmatcher patterns='(?:fennel/[^/]+$)'> + * matcher: + <patternmatcher patterns='(?:fennel/[^/]+$)'> $ hg debugwalk -v -I 'rootfilesin:fennel' - matcher: <includematcher includes='(?:fennel/[^/]+$)'> + * matcher: + <includematcher includes='(?:fennel/[^/]+$)'> $ hg debugwalk -v 'rootfilesin:skunk' - matcher: <patternmatcher patterns='(?:skunk/[^/]+$)'> + * matcher: + <patternmatcher patterns='(?:skunk/[^/]+$)'> $ hg debugwalk -v -I 'rootfilesin:skunk' - matcher: <includematcher includes='(?:skunk/[^/]+$)'> + * matcher: + <includematcher includes='(?:skunk/[^/]+$)'> $ hg debugwalk -v 'rootfilesin:beans' - matcher: <patternmatcher patterns='(?:beans/[^/]+$)'> + * matcher: + <patternmatcher patterns='(?:beans/[^/]+$)'> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -174,7 +202,8 @@ f beans/pinto ../beans/pinto f beans/turtle ../beans/turtle $ hg debugwalk -v -I 'rootfilesin:beans' - matcher: <includematcher includes='(?:beans/[^/]+$)'> + * matcher: + <includematcher includes='(?:beans/[^/]+$)'> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -182,19 +211,26 @@ f beans/pinto ../beans/pinto f beans/turtle ../beans/turtle $ hg debugwalk -v 'rootfilesin:mammals' - matcher: <patternmatcher patterns='(?:mammals/[^/]+$)'> + * matcher: + <patternmatcher patterns='(?:mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk -v -I 'rootfilesin:mammals' - matcher: <includematcher includes='(?:mammals/[^/]+$)'> + * matcher: + <includematcher includes='(?:mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk -v 'rootfilesin:mammals/' - matcher: <patternmatcher patterns='(?:mammals/[^/]+$)'> + * matcher: + <patternmatcher patterns='(?:mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk -v -I 'rootfilesin:mammals/' - matcher: <includematcher includes='(?:mammals/[^/]+$)'> + * matcher: + <includematcher includes='(?:mammals/[^/]+$)'> f mammals/skunk skunk $ hg debugwalk -v -X 'rootfilesin:mammals' - matcher: <differencematcher m1=<alwaysmatcher>, m2=<includematcher includes='(?:mammals/[^/]+$)'>> + * matcher: + <differencematcher m1= + <alwaysmatcher>, m2= + <includematcher includes='(?:mammals/[^/]+$)'>> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -209,31 +245,36 @@ f mammals/Procyonidae/raccoon Procyonidae/raccoon $ hg debugwalk -v . - matcher: <patternmatcher patterns='(?:mammals(?:/|$))'> + * matcher: + <patternmatcher patterns='(?: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 -v -I. - matcher: <includematcher includes='(?:mammals(?:/|$))'> + * matcher: + <includematcher 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 -v Procyonidae - matcher: <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))'> + * 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 -v . - matcher: <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))'> f mammals/Procyonidae/cacomistle cacomistle f mammals/Procyonidae/coatimundi coatimundi f mammals/Procyonidae/raccoon raccoon $ hg debugwalk -v .. - matcher: <patternmatcher patterns='(?:mammals(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:mammals(?:/|$))'> f mammals/Procyonidae/cacomistle cacomistle f mammals/Procyonidae/coatimundi coatimundi f mammals/Procyonidae/raccoon raccoon @@ -241,7 +282,8 @@ $ cd .. $ hg debugwalk -v ../beans - matcher: <patternmatcher patterns='(?:beans(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:beans(?:/|$))'> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -249,7 +291,8 @@ f beans/pinto ../beans/pinto f beans/turtle ../beans/turtle $ hg debugwalk -v . - matcher: <patternmatcher patterns='(?:mammals(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:mammals(?:/|$))'> f mammals/Procyonidae/cacomistle Procyonidae/cacomistle f mammals/Procyonidae/coatimundi Procyonidae/coatimundi f mammals/Procyonidae/raccoon Procyonidae/raccoon @@ -263,7 +306,8 @@ $ cd .. $ hg debugwalk -v -Ibeans - matcher: <includematcher includes='(?:beans(?:/|$))'> + * matcher: + <includematcher includes='(?:beans(?:/|$))'> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -271,54 +315,89 @@ f beans/pinto beans/pinto f beans/turtle beans/turtle $ hg debugwalk -v -I '{*,{b,m}*/*}k' - matcher: <includematcher includes='(?:(?:[^/]*|(?:b|m)[^/]*\\/[^/]*)k(?:/|$))'> + * matcher: + <includematcher includes='(?:(?:[^/]*|(?:b|m)[^/]*\\/[^/]*)k(?:/|$))'> f beans/black beans/black f fenugreek fenugreek f mammals/skunk mammals/skunk $ hg debugwalk -v -Ibeans mammals - matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:mammals(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> + * matcher: + <intersectionmatcher m1= + <patternmatcher patterns='(?:mammals(?:/|$))'>, m2= + <includematcher includes='(?:beans(?:/|$))'>> $ hg debugwalk -v -Inon-existent - matcher: <includematcher includes='(?:non\\-existent(?:/|$))'> + * matcher: + <includematcher includes='(?:non\\-existent(?:/|$))'> $ hg debugwalk -v -Inon-existent -Ibeans/black - matcher: <includematcher includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'> + * matcher: + <includematcher includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'> f beans/black beans/black $ hg debugwalk -v -Ibeans beans/black - matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> + * matcher: + <intersectionmatcher m1= + <patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2= + <includematcher includes='(?:beans(?:/|$))'>> f beans/black beans/black exact $ hg debugwalk -v -Ibeans/black beans - matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:beans(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> + * matcher: + <intersectionmatcher m1= + <patternmatcher patterns='(?:beans(?:/|$))'>, m2= + <includematcher includes='(?:beans\\/black(?:/|$))'>> f beans/black beans/black $ hg debugwalk -v -Xbeans/black beans - matcher: <differencematcher m1=<patternmatcher patterns='(?:beans(?:/|$))'>, 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 f beans/pinto beans/pinto f beans/turtle beans/turtle $ hg debugwalk -v -Xbeans/black -Ibeans - matcher: <differencematcher m1=<includematcher includes='(?:beans(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> + * matcher: + <differencematcher m1= + <includematcher includes='(?:beans(?:/|$))'>, m2= + <includematcher 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 -v -Xbeans/black beans/black - matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> + * matcher: + <differencematcher m1= + <patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2= + <includematcher includes='(?:beans\\/black(?:/|$))'>> $ hg debugwalk -v -Xbeans/black -Ibeans/black - matcher: <differencematcher m1=<includematcher includes='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>> + * matcher: + <differencematcher m1= + <includematcher includes='(?:beans\\/black(?:/|$))'>, m2= + <includematcher includes='(?:beans\\/black(?:/|$))'>> $ hg debugwalk -v -Xbeans beans/black - matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> + * matcher: + <differencematcher m1= + <patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2= + <includematcher includes='(?:beans(?:/|$))'>> $ hg debugwalk -v -Xbeans -Ibeans/black - matcher: <differencematcher m1=<includematcher includes='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> + * matcher: + <differencematcher m1= + <includematcher includes='(?:beans\\/black(?:/|$))'>, m2= + <includematcher includes='(?:beans(?:/|$))'>> $ hg debugwalk -v 'glob:mammals/../beans/b*' - matcher: <patternmatcher patterns='(?:beans\\/b[^/]*$)'> + * matcher: + <patternmatcher patterns='(?:beans\\/b[^/]*$)'> f beans/black beans/black f beans/borlotti beans/borlotti $ hg debugwalk -v '-X*/Procyonidae' mammals - matcher: <differencematcher m1=<patternmatcher patterns='(?:mammals(?:/|$))'>, m2=<includematcher includes='(?:[^/]*\\/Procyonidae(?:/|$))'>> + * matcher: + <differencematcher m1= + <patternmatcher patterns='(?:mammals(?:/|$))'>, m2= + <includematcher includes='(?:[^/]*\\/Procyonidae(?:/|$))'>> f mammals/skunk mammals/skunk $ hg debugwalk -v path:mammals - matcher: <patternmatcher patterns='(?:mammals(?:/|$))'> + * 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 @@ -345,18 +424,31 @@ Test explicit paths and excludes: $ hg debugwalk -v fennel -X fennel - matcher: <differencematcher m1=<patternmatcher patterns='(?:fennel(?:/|$))'>, m2=<includematcher includes='(?:fennel(?:/|$))'>> + * matcher: + <differencematcher m1= + <patternmatcher patterns='(?:fennel(?:/|$))'>, m2= + <includematcher includes='(?:fennel(?:/|$))'>> $ hg debugwalk -v fennel -X 'f*' - matcher: <differencematcher m1=<patternmatcher patterns='(?:fennel(?:/|$))'>, m2=<includematcher includes='(?:f[^/]*(?:/|$))'>> + * matcher: + <differencematcher m1= + <patternmatcher patterns='(?:fennel(?:/|$))'>, m2= + <includematcher includes='(?:f[^/]*(?:/|$))'>> $ hg debugwalk -v beans/black -X 'path:beans' - matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> + * matcher: + <differencematcher m1= + <patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2= + <includematcher includes='(?:beans(?:/|$))'>> $ hg debugwalk -v -I 'path:beans/black' -X 'path:beans' - matcher: <differencematcher m1=<includematcher includes='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>> + * matcher: + <differencematcher m1= + <includematcher includes='(?:beans\\/black(?:/|$))'>, m2= + <includematcher includes='(?:beans(?:/|$))'>> Test absolute paths: $ hg debugwalk -v `pwd`/beans - matcher: <patternmatcher patterns='(?:beans(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:beans(?:/|$))'> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -370,7 +462,8 @@ Test patterns: $ hg debugwalk -v glob:\* - matcher: <patternmatcher patterns='(?:[^/]*$)'> + * matcher: + <patternmatcher patterns='(?:[^/]*$)'> f fennel fennel f fenugreek fenugreek f fiddlehead fiddlehead @@ -380,19 +473,23 @@ adding glob:glob warning: filename contains ':', which is reserved on Windows: 'glob:glob' $ hg debugwalk -v glob:\* - matcher: <patternmatcher patterns='(?:[^/]*$)'> + * matcher: + <patternmatcher patterns='(?:[^/]*$)'> f fennel fennel f fenugreek fenugreek f fiddlehead fiddlehead f glob:glob glob:glob $ hg debugwalk -v glob:glob - matcher: <patternmatcher patterns='(?:glob$)'> + * matcher: + <patternmatcher patterns='(?:glob$)'> glob: $ENOENT$ $ hg debugwalk -v glob:glob:glob - matcher: <patternmatcher patterns='(?:glob\\:glob$)'> + * matcher: + <patternmatcher patterns='(?:glob\\:glob$)'> f glob:glob glob:glob exact $ hg debugwalk -v path:glob:glob - matcher: <patternmatcher patterns='(?:glob\\:glob(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:glob\\:glob(?:/|$))'> f glob:glob glob:glob exact $ rm glob:glob $ hg addremove @@ -400,38 +497,46 @@ #endif $ hg debugwalk -v 'glob:**e' - matcher: <patternmatcher patterns='(?:.*e$)'> + * matcher: + <patternmatcher patterns='(?:.*e$)'> f beans/turtle beans/turtle f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle $ hg debugwalk -v 're:.*[kb]$' - matcher: <patternmatcher patterns='(?:.*[kb]$)'> + * matcher: + <patternmatcher patterns='(?:.*[kb]$)'> f beans/black beans/black f fenugreek fenugreek f mammals/skunk mammals/skunk $ hg debugwalk -v path:beans/black - matcher: <patternmatcher patterns='(?:beans\\/black(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:beans\\/black(?:/|$))'> f beans/black beans/black exact $ hg debugwalk -v path:beans//black - matcher: <patternmatcher patterns='(?:beans\\/black(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:beans\\/black(?:/|$))'> f beans/black beans/black exact $ hg debugwalk -v relglob:Procyonidae - matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae$)'> + * matcher: + <patternmatcher patterns='(?:(?:|.*/)Procyonidae$)'> $ hg debugwalk -v 'relglob:Procyonidae/**' - matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$)'> + * 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 -v 'relglob:Procyonidae/**' fennel - matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$|fennel(?:/|$))'> + * 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 -v beans 'glob:beans/*' - matcher: <patternmatcher patterns='(?:beans(?:/|$)|beans\\/[^/]*$)'> + * matcher: + <patternmatcher patterns='(?:beans(?:/|$)|beans\\/[^/]*$)'> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -439,78 +544,93 @@ f beans/pinto beans/pinto f beans/turtle beans/turtle $ hg debugwalk -v 'glob:mamm**' - matcher: <patternmatcher patterns='(?:mamm.*$)'> + * 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 -v 'glob:mamm**' fennel - matcher: <patternmatcher patterns='(?:mamm.*$|fennel(?:/|$))'> + * 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 -v 'glob:j*' - matcher: <patternmatcher patterns='(?:j[^/]*$)'> + * matcher: + <patternmatcher patterns='(?:j[^/]*$)'> $ hg debugwalk -v NOEXIST - matcher: <patternmatcher patterns='(?:NOEXIST(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:NOEXIST(?:/|$))'> NOEXIST: * (glob) #if fifo $ mkfifo fifo $ hg debugwalk -v fifo - matcher: <patternmatcher patterns='(?:fifo(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:fifo(?:/|$))'> fifo: unsupported file type (type is fifo) #endif $ rm fenugreek $ hg debugwalk -v fenugreek - matcher: <patternmatcher patterns='(?:fenugreek(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:fenugreek(?:/|$))'> f fenugreek fenugreek exact $ hg rm fenugreek $ hg debugwalk -v fenugreek - matcher: <patternmatcher patterns='(?:fenugreek(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:fenugreek(?:/|$))'> f fenugreek fenugreek exact $ touch new $ hg debugwalk -v new - matcher: <patternmatcher patterns='(?:new(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:new(?:/|$))'> f new new exact $ mkdir ignored $ touch ignored/file $ echo '^ignored$' > .hgignore $ hg debugwalk -v ignored - matcher: <patternmatcher patterns='(?:ignored(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:ignored(?:/|$))'> $ hg debugwalk -v ignored/file - matcher: <patternmatcher patterns='(?:ignored\\/file(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:ignored\\/file(?:/|$))'> f ignored/file ignored/file exact Test listfile and listfile0 $ $PYTHON -c "open('listfile0', 'wb').write(b'fenugreek\0new\0')" $ hg debugwalk -v -I 'listfile0:listfile0' - matcher: <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$))'> + * matcher: + <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$))'> f fenugreek fenugreek f new new $ $PYTHON -c "open('listfile', 'wb').write(b'fenugreek\nnew\r\nmammals/skunk\n')" $ hg debugwalk -v -I 'listfile:listfile' - matcher: <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$)|mammals\\/skunk(?:/|$))'> + * matcher: + <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$)|mammals\\/skunk(?:/|$))'> f fenugreek fenugreek f mammals/skunk mammals/skunk f new new $ cd .. $ hg debugwalk -v -R t t/mammals/skunk - matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'> f mammals/skunk t/mammals/skunk exact $ mkdir t2 $ cd t2 $ hg debugwalk -v -R ../t ../t/mammals/skunk - matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'> f mammals/skunk ../t/mammals/skunk exact $ hg debugwalk -v --cwd ../t mammals/skunk - matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'> + * matcher: + <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'> f mammals/skunk mammals/skunk exact $ cd ..