Mercurial > hg
changeset 32457:2def402bd16d
debugwalk: also print matcher representation
This will make the effect of coming patches clearer.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 22 May 2017 11:08:52 -0700 |
parents | b647b923486f |
children | a04bc55201c3 |
files | mercurial/debugcommands.py tests/test-eolfilename.t tests/test-walk.t |
diffstat | 3 files changed, 83 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/debugcommands.py Thu May 25 01:45:52 2017 +0200 +++ b/mercurial/debugcommands.py Mon May 22 11:08:52 2017 -0700 @@ -2125,6 +2125,7 @@ def debugwalk(ui, repo, *pats, **opts): """show how files match on given patterns""" m = scmutil.match(repo[None], pats, opts) + ui.write(('matcher: %r\n' % m)) items = list(repo[None].walk(m)) if not items: return
--- a/tests/test-eolfilename.t Thu May 25 01:45:52 2017 +0200 +++ b/tests/test-eolfilename.t Mon May 22 11:08:52 2017 -0700 @@ -33,6 +33,7 @@ [255] $ echo foo > "$A" $ hg debugwalk + matcher: <matcher files=[], patterns=None, includes=None, excludes=None> f he\r (no-eol) (esc) llo he\r (no-eol) (esc) llo
--- a/tests/test-walk.t Thu May 25 01:45:52 2017 +0200 +++ b/tests/test-walk.t Mon May 22 11:08:52 2017 -0700 @@ -29,6 +29,7 @@ $ hg commit -m "commit #0" $ hg debugwalk + matcher: <matcher files=[], patterns=None, includes=None, excludes=None> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -43,6 +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> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -59,6 +61,7 @@ $ cd mammals $ hg debugwalk + matcher: <matcher files=[], patterns=None, includes=None, excludes=None> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -73,6 +76,7 @@ f mammals/Procyonidae/raccoon Procyonidae/raccoon f mammals/skunk skunk $ hg debugwalk -X ../beans + matcher: <matcher files=[], patterns=None, includes=None, excludes='(?:beans(?:/|$))'> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead @@ -81,24 +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> f mammals/skunk skunk $ hg debugwalk -I 'glob:*k' + matcher: <matcher files=[], patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))', excludes=None> f mammals/skunk skunk $ hg debugwalk -I 'relglob:*k' + matcher: <matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))', excludes=None> 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> f mammals/skunk skunk $ hg debugwalk -I 're:.*k$' + matcher: <matcher files=[], patterns=None, includes='(?:.*k$)', excludes=None> 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> 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> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -106,6 +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> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -114,22 +126,27 @@ f beans/turtle ../beans/turtle $ hg debugwalk 'rootfilesin:' + matcher: <matcher files=[], patterns='(?:^[^/]+$)', includes=None, excludes=None> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -I 'rootfilesin:' + matcher: <matcher files=[], patterns=None, includes='(?:^[^/]+$)', excludes=None> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk 'rootfilesin:.' + matcher: <matcher files=[], patterns='(?:^[^/]+$)', includes=None, excludes=None> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -I 'rootfilesin:.' + matcher: <matcher files=[], patterns=None, includes='(?:^[^/]+$)', excludes=None> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead $ hg debugwalk -X 'rootfilesin:' + matcher: <matcher files=[], patterns=None, includes=None, excludes='(?:^[^/]+$)'> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -141,10 +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> $ hg debugwalk -I 'rootfilesin:fennel' + matcher: <matcher files=[], patterns=None, includes='(?:^fennel/[^/]+$)', excludes=None> $ hg debugwalk 'rootfilesin:skunk' + matcher: <matcher files=[], patterns='(?:^skunk/[^/]+$)', includes=None, excludes=None> $ hg debugwalk -I 'rootfilesin:skunk' + matcher: <matcher files=[], patterns=None, includes='(?:^skunk/[^/]+$)', excludes=None> $ hg debugwalk 'rootfilesin:beans' + matcher: <matcher files=[], patterns='(?:^beans/[^/]+$)', includes=None, excludes=None> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -152,6 +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> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -159,14 +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> f mammals/skunk skunk $ hg debugwalk -I 'rootfilesin:mammals' + matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)', excludes=None> f mammals/skunk skunk $ hg debugwalk 'rootfilesin:mammals/' + matcher: <matcher files=[], patterns='(?:^mammals/[^/]+$)', includes=None, excludes=None> f mammals/skunk skunk $ hg debugwalk -I 'rootfilesin:mammals/' + matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)', excludes=None> f mammals/skunk skunk $ hg debugwalk -X 'rootfilesin:mammals' + matcher: <matcher files=[], patterns=None, includes=None, excludes='(?:^mammals/[^/]+$)'> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -181,26 +209,31 @@ f mammals/Procyonidae/raccoon Procyonidae/raccoon $ hg debugwalk . + matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None, excludes=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> 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> 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> 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> f mammals/Procyonidae/cacomistle cacomistle f mammals/Procyonidae/coatimundi coatimundi f mammals/Procyonidae/raccoon raccoon @@ -208,6 +241,7 @@ $ cd .. $ hg debugwalk ../beans + matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None, excludes=None> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -215,6 +249,7 @@ f beans/pinto ../beans/pinto f beans/turtle ../beans/turtle $ hg debugwalk . + matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None, excludes=None> f mammals/Procyonidae/cacomistle Procyonidae/cacomistle f mammals/Procyonidae/coatimundi Procyonidae/coatimundi f mammals/Procyonidae/raccoon Procyonidae/raccoon @@ -228,6 +263,7 @@ $ cd .. $ hg debugwalk -Ibeans + matcher: <matcher files=[], patterns=None, includes='(?:beans(?:/|$))', excludes=None> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -235,41 +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> 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> $ hg debugwalk -Inon-existent + matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$))', excludes=None> $ hg debugwalk -Inon-existent -Ibeans/black + matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))', excludes=None> f beans/black beans/black $ hg debugwalk -Ibeans beans/black + matcher: <matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes='(?:beans(?:/|$))', excludes=None> f beans/black beans/black exact $ hg debugwalk -Ibeans/black beans + matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes='(?:beans\\/black(?:/|$))', excludes=None> f beans/black beans/black $ hg debugwalk -Xbeans/black beans + matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None, excludes='(?: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: <matcher files=[], patterns=None, includes='(?:beans(?:/|$))', excludes='(?: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: <matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None, excludes='(?:beans\\/black(?:/|$))'> f beans/black beans/black exact $ hg debugwalk -Xbeans/black -Ibeans/black + matcher: <matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))', excludes='(?:beans\\/black(?:/|$))'> $ hg debugwalk -Xbeans beans/black + matcher: <matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None, excludes='(?:beans(?:/|$))'> f beans/black beans/black exact $ hg debugwalk -Xbeans -Ibeans/black + matcher: <matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))', excludes='(?:beans(?:/|$))'> $ hg debugwalk 'glob:mammals/../beans/b*' + matcher: <matcher files=['beans'], patterns='(?:beans\\/b[^/]*$)', includes=None, excludes=None> f beans/black beans/black f beans/borlotti beans/borlotti $ hg debugwalk '-X*/Procyonidae' mammals + matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None, excludes='(?:[^/]*\\/Procyonidae(?:/|$))'> f mammals/skunk mammals/skunk $ hg debugwalk path:mammals + matcher: <matcher files=['mammals'], patterns='(?:^mammals(?:/|$))', includes=None, excludes=None> f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon @@ -296,6 +347,7 @@ Test absolute paths: $ hg debugwalk `pwd`/beans + matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None, excludes=None> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -309,6 +361,7 @@ Test patterns: $ hg debugwalk glob:\* + matcher: <matcher files=['.'], patterns='(?:[^/]*$)', includes=None, excludes=None> f fennel fennel f fenugreek fenugreek f fiddlehead fiddlehead @@ -318,15 +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> 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> glob: No such file or directory $ hg debugwalk glob:glob:glob + matcher: <matcher files=['glob:glob'], patterns='(?:glob\\:glob$)', includes=None, excludes=None> f glob:glob glob:glob exact $ hg debugwalk path:glob:glob + matcher: <matcher files=['glob:glob'], patterns='(?:^glob\\:glob(?:/|$))', includes=None, excludes=None> f glob:glob glob:glob exact $ rm glob:glob $ hg addremove @@ -334,30 +391,38 @@ #endif $ hg debugwalk 'glob:**e' + matcher: <matcher files=['.'], patterns='(?:.*e$)', includes=None, excludes=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> 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> f beans/black beans/black exact $ hg debugwalk path:beans//black + matcher: <matcher files=['beans/black'], patterns='(?:^beans\\/black(?:/|$))', includes=None, excludes=None> f beans/black beans/black exact $ hg debugwalk relglob:Procyonidae + matcher: <matcher files=['.'], patterns='(?:(?:|.*/)Procyonidae$)', includes=None, excludes=None> $ hg debugwalk 'relglob:Procyonidae/**' + matcher: <matcher files=['.'], patterns='(?:(?:|.*/)Procyonidae\\/.*$)', includes=None, excludes=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> 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> f beans/black beans/black f beans/borlotti beans/borlotti f beans/kidney beans/kidney @@ -365,63 +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> 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> 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> $ hg debugwalk NOEXIST + matcher: <matcher files=['NOEXIST'], patterns='(?:NOEXIST(?:/|$))', includes=None, excludes=None> NOEXIST: * (glob) #if fifo $ mkfifo fifo $ hg debugwalk fifo + matcher: <matcher files=['fifo'], patterns='(?:fifo(?:/|$))', includes=None, excludes=None> fifo: unsupported file type (type is fifo) #endif $ rm fenugreek $ hg debugwalk fenugreek + matcher: <matcher files=['fenugreek'], patterns='(?:fenugreek(?:/|$))', includes=None, excludes=None> f fenugreek fenugreek exact $ hg rm fenugreek $ hg debugwalk fenugreek + matcher: <matcher files=['fenugreek'], patterns='(?:fenugreek(?:/|$))', includes=None, excludes=None> f fenugreek fenugreek exact $ touch new $ hg debugwalk new + matcher: <matcher files=['new'], patterns='(?:new(?:/|$))', includes=None, excludes=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> $ hg debugwalk ignored/file + matcher: <matcher files=['ignored/file'], patterns='(?:ignored\\/file(?:/|$))', includes=None, excludes=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> 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> 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> 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> 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> f mammals/skunk mammals/skunk exact $ cd .. @@ -432,7 +512,7 @@ $ echo fennel > overflow.list $ $PYTHON -c "for i in xrange(20000 / 100): print 'x' * 100" >> overflow.list $ echo fenugreek >> overflow.list - $ hg debugwalk 'listfile:overflow.list' 2>&1 | grep -v '^xxx' + $ hg debugwalk 'listfile:overflow.list' 2>&1 | egrep -v '(^matcher: |^xxx)' f fennel fennel exact f fenugreek fenugreek exact $ cd ..