$ hg init t $ cd t $ mkdir -p beans $ for b in kidney navy turtle borlotti black pinto; do > echo $b > beans/$b > done $ mkdir -p mammals/Procyonidae $ for m in cacomistle coatimundi raccoon; do > echo $m > mammals/Procyonidae/$m > done $ echo skunk > mammals/skunk $ echo fennel > fennel $ echo fenugreek > fenugreek $ echo fiddlehead > fiddlehead $ hg addremove adding beans/black adding beans/borlotti adding beans/kidney adding beans/navy adding beans/pinto adding beans/turtle adding fennel adding fenugreek adding fiddlehead adding mammals/Procyonidae/cacomistle adding mammals/Procyonidae/coatimundi adding mammals/Procyonidae/raccoon adding mammals/skunk $ hg commit -m "commit #0" $ hg debugwalk -v * matcher: f beans/black 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 f fennel fennel f fenugreek fenugreek f fiddlehead fiddlehead 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 -I. * matcher: f beans/black 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 f fennel fennel f fenugreek fenugreek f fiddlehead fiddlehead 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 Test 'filepath:' pattern $ hg debugwalk -v -I 'filepath:mammals/Procyonidae/cacomistle' * matcher: f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle $ hg debugwalk -v -I 'filepath:mammals/Procyonidae' * matcher: $ hg debugwalk -v -X 'filepath:beans/borlotti' * matcher: , m2=> f beans/black beans/black f beans/kidney beans/kidney f beans/navy beans/navy f beans/pinto beans/pinto f beans/turtle beans/turtle f fennel fennel f fenugreek fenugreek f fiddlehead fiddlehead 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 Test relative paths $ cd mammals $ hg debugwalk -v * matcher: f beans/black ../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 f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead 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 -X ../beans * matcher: , m2=> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead 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 '*k' * matcher: f mammals/skunk skunk $ hg debugwalk -v -I 'glob:*k' * matcher: f mammals/skunk skunk $ hg debugwalk -v -I 'relglob:*k' * matcher: f beans/black ../beans/black f fenugreek ../fenugreek f mammals/skunk skunk $ hg debugwalk -v -I 'relglob:*k' . * matcher: , m2=> f mammals/skunk skunk $ hg debugwalk -v -I 're:.*k$' * matcher: f beans/black ../beans/black f fenugreek ../fenugreek f mammals/skunk skunk $ hg debugwalk -v -I 'relre:.*k$' * matcher: f beans/black ../beans/black f fenugreek ../fenugreek f mammals/skunk skunk $ hg debugwalk -v -I 'path:beans' * matcher: f beans/black ../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 -I 'relpath:detour/../../beans' * matcher: f beans/black ../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 'rootfilesin:' * matcher: f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -v -I 'rootfilesin:' * matcher: f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -v 'rootfilesin:.' * matcher: f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -v -I 'rootfilesin:.' * matcher: f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -v -X 'rootfilesin:' * matcher: , m2=> f beans/black ../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 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 'rootfilesin:fennel' * matcher: $ hg debugwalk -v -I 'rootfilesin:fennel' * matcher: $ hg debugwalk -v 'rootfilesin:skunk' * matcher: $ hg debugwalk -v -I 'rootfilesin:skunk' * matcher: $ hg debugwalk -v 'rootfilesin:beans' * matcher: f beans/black ../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 -I 'rootfilesin:beans' * matcher: f beans/black ../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 'rootfilesin:mammals' * matcher: f mammals/skunk skunk $ hg debugwalk -v -I 'rootfilesin:mammals' * matcher: f mammals/skunk skunk $ hg debugwalk -v 'rootfilesin:mammals/' * matcher: f mammals/skunk skunk $ hg debugwalk -v -I 'rootfilesin:mammals/' * matcher: f mammals/skunk skunk $ hg debugwalk -v -X 'rootfilesin:mammals' * matcher: , m2=> f beans/black ../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 f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead f mammals/Procyonidae/cacomistle Procyonidae/cacomistle f mammals/Procyonidae/coatimundi Procyonidae/coatimundi f mammals/Procyonidae/raccoon Procyonidae/raccoon $ hg debugwalk -v . * matcher: 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: 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: f mammals/Procyonidae/cacomistle Procyonidae/cacomistle f mammals/Procyonidae/coatimundi Procyonidae/coatimundi f mammals/Procyonidae/raccoon Procyonidae/raccoon $ cd Procyonidae $ hg debugwalk -v . * matcher: f mammals/Procyonidae/cacomistle cacomistle f mammals/Procyonidae/coatimundi coatimundi f mammals/Procyonidae/raccoon raccoon $ hg debugwalk -v .. * matcher: f mammals/Procyonidae/cacomistle cacomistle f mammals/Procyonidae/coatimundi coatimundi f mammals/Procyonidae/raccoon raccoon f mammals/skunk ../skunk $ cd .. $ hg debugwalk -v ../beans * matcher: f beans/black ../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 . * matcher: 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 .hg abort: path 'mammals/.hg' is inside nested repo 'mammals' [10] $ hg debugwalk -v ../.hg abort: path contains illegal component: .hg [10] $ cd .. $ hg debugwalk -v -Ibeans * matcher: f beans/black 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 -I '{*,{b,m}*/*}k' * matcher: f beans/black beans/black f fenugreek fenugreek f mammals/skunk mammals/skunk $ hg debugwalk -v -Ibeans mammals * matcher: , m2=> $ hg debugwalk -v -Inon-existent * matcher: $ hg debugwalk -v -Inon-existent -Ibeans/black * matcher: f beans/black beans/black $ hg debugwalk -v -Ibeans beans/black * matcher: , m2=> f beans/black beans/black exact $ hg debugwalk -v -Ibeans/black beans * matcher: , m2=> f beans/black beans/black $ hg debugwalk -v -Xbeans/black beans * matcher: , m2=> 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: , m2=> 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: , m2=> $ hg debugwalk -v -Xbeans/black -Ibeans/black * matcher: , m2=> $ hg debugwalk -v -Xbeans beans/black * matcher: , m2=> $ hg debugwalk -v -Xbeans -Ibeans/black * matcher: , m2=> $ hg debugwalk -v 'glob:mammals/../beans/b*' * matcher: f beans/black beans/black f beans/borlotti beans/borlotti $ hg debugwalk -v '-X*/Procyonidae' mammals * matcher: , m2=> f mammals/skunk mammals/skunk $ hg debugwalk -v path:mammals * matcher: 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 .. abort: .. not under root '$TESTTMP/t' [255] $ hg debugwalk -v beans/../.. abort: beans/../.. not under root '$TESTTMP/t' [255] $ hg debugwalk -v .hg abort: path contains illegal component: .hg [10] $ hg debugwalk -v beans/../.hg abort: path contains illegal component: .hg [10] $ hg debugwalk -v beans/../.hg/data abort: path contains illegal component: .hg/data [10] $ hg debugwalk -v beans/.hg abort: path 'beans/.hg' is inside nested repo 'beans' [10] Test explicit paths and excludes: $ hg debugwalk -v fennel -X fennel * matcher: , m2=> $ hg debugwalk -v fennel -X 'f*' * matcher: , m2=> $ hg debugwalk -v beans/black -X 'path:beans' * matcher: , m2=> $ hg debugwalk -v -I 'path:beans/black' -X 'path:beans' * matcher: , m2=> Test absolute paths: $ hg debugwalk -v `pwd`/beans * matcher: f beans/black 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 `pwd`/.. abort: $TESTTMP/t/.. not under root '$TESTTMP/t' [255] Test patterns: $ hg debugwalk -v glob:\* * matcher: f fennel fennel f fenugreek fenugreek f fiddlehead fiddlehead #if eol-in-paths $ echo glob:glob > glob:glob $ hg addremove adding glob:glob warning: filename contains ':', which is reserved on Windows: 'glob:glob' $ hg debugwalk -v glob:\* * matcher: f fennel fennel f fenugreek fenugreek f fiddlehead fiddlehead f glob:glob glob:glob $ hg debugwalk -v glob:glob * matcher: glob: $ENOENT$ $ hg debugwalk -v glob:glob:glob * matcher: f glob:glob glob:glob exact $ hg debugwalk -v path:glob:glob * matcher: f glob:glob glob:glob exact $ rm glob:glob $ hg addremove removing glob:glob #endif $ hg debugwalk -v 'glob:**e' * matcher: f beans/turtle beans/turtle f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle $ hg debugwalk -v 're:.*[kb]$' * matcher: f beans/black beans/black f fenugreek fenugreek f mammals/skunk mammals/skunk $ hg debugwalk -v path:beans/black * matcher: f beans/black beans/black exact $ hg debugwalk -v path:beans//black * matcher: f beans/black beans/black exact $ hg debugwalk -v relglob:Procyonidae * matcher: $ hg debugwalk -v 'relglob:Procyonidae/**' * matcher: 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: 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: f beans/black 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 'glob:mamm**' * matcher: 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: 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: $ hg debugwalk -v NOEXIST * matcher: NOEXIST: * (glob) #if fifo $ mkfifo fifo $ hg debugwalk -v fifo * matcher: fifo: unsupported file type (type is fifo) #endif $ rm fenugreek $ hg debugwalk -v fenugreek * matcher: f fenugreek fenugreek exact $ hg rm fenugreek $ hg debugwalk -v fenugreek * matcher: f fenugreek fenugreek exact $ touch new $ hg debugwalk -v new * matcher: f new new exact $ mkdir ignored $ touch ignored/file $ echo '^ignored$' > .hgignore $ hg debugwalk -v ignored * matcher: $ hg debugwalk -v ignored/file * matcher: 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: 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: f fenugreek fenugreek f mammals/skunk mammals/skunk f new new $ cd .. $ hg debugwalk -v -R t t/mammals/skunk * matcher: f mammals/skunk t/mammals/skunk exact $ mkdir t2 $ cd t2 $ hg debugwalk -v -R ../t ../t/mammals/skunk * matcher: f mammals/skunk ../t/mammals/skunk exact $ hg debugwalk -v --cwd ../t mammals/skunk * matcher: f mammals/skunk mammals/skunk exact $ cd .. Test split patterns on overflow $ cd t $ echo fennel > overflow.list $ cat >> printnum.py < for i in range(20000 // 100): > print('x' * 100) > EOF $ "$PYTHON" printnum.py >> overflow.list $ echo fenugreek >> overflow.list $ hg debugwalk 'listfile:overflow.list' 2>&1 | grep -E -v '^xxx' f fennel fennel exact f fenugreek fenugreek exact $ cd ..