match: drop unnecessary wrapping of regex in group
It seems the regexes have been wrapped in an unnamed group since
b6c42714d900 (Add locate command., 2005-07-05). In that commit, the
grouping was needed because there was a "head" ('^') added before the
group and a "tail" (os.sep) added after it. It seems the head was
moved inside the group in
1c0c413cccdd (Get add and locate to use new
repo and dirstate walk code., 2005-07-18) and the tail was moved
inside the group in
89985a1b3427 (Clean up walk and changes code to
use normalised names properly., 2005-07-31), So it seems to me that
we've carried around the unnecessary group for 13 years. This patch
removes it.
Differential Revision: https://phab.mercurial-scm.org/D5352
--- a/mercurial/match.py Sun Dec 02 13:45:20 2018 -0800
+++ b/mercurial/match.py Sun Dec 02 13:09:46 2018 -0800
@@ -1185,11 +1185,10 @@
return regex, lambda f: any(mf(f) for mf in matchfuncs)
MAX_RE_SIZE = 20000
-_BASE_SIZE = len('(?:)')
def _joinregexes(regexps):
"""gather multiple regular expressions into a single one"""
- return '(?:%s)' % '|'.join(regexps)
+ return '|'.join(regexps)
def _buildregexmatch(kindpats, globsuffix):
"""Build a match function from a list of kinds and kindpats,
@@ -1209,17 +1208,17 @@
fullregexp = _joinregexes(regexps)
startidx = 0
- groupsize = _BASE_SIZE
+ groupsize = 0
for idx, r in enumerate(regexps):
piecesize = len(r)
- if (piecesize + _BASE_SIZE) > MAX_RE_SIZE:
+ if piecesize > MAX_RE_SIZE:
msg = _("matcher pattern is too long (%d bytes)") % piecesize
raise error.Abort(msg)
elif (groupsize + piecesize) > MAX_RE_SIZE:
group = regexps[startidx:idx]
allgroups.append(_joinregexes(group))
startidx = idx
- groupsize = _BASE_SIZE
+ groupsize = 0
groupsize += piecesize + 1
if startidx == 0:
@@ -1233,7 +1232,7 @@
except re.error:
for k, p, s in kindpats:
try:
- _rematcher('(?:%s)' % _regex(k, p, globsuffix))
+ _rematcher(_regex(k, p, globsuffix))
except re.error:
if s:
raise error.Abort(_("%s: invalid pattern (%s): %s") %
--- a/tests/test-fileset.t Sun Dec 02 13:45:20 2018 -0800
+++ b/tests/test-fileset.t Sun Dec 02 13:09:46 2018 -0800
@@ -19,18 +19,18 @@
$ fileset -v a1
(symbol 'a1')
* matcher:
- <patternmatcher patterns='(?:a1$)'>
+ <patternmatcher patterns='a1$'>
a1
$ fileset -v 'a*'
(symbol 'a*')
* matcher:
- <patternmatcher patterns='(?:a[^/]*$)'>
+ <patternmatcher patterns='a[^/]*$'>
a1
a2
$ fileset -v '"re:a\d"'
(string 're:a\\d')
* matcher:
- <patternmatcher patterns='(?:a\\d)'>
+ <patternmatcher patterns='a\\d'>
a1
a2
$ fileset -v '!re:"a\d"'
@@ -41,7 +41,7 @@
* matcher:
<predicatenmatcher
pred=<not
- <patternmatcher patterns='(?:a\\d)'>>>
+ <patternmatcher patterns='a\\d'>>>
b1
b2
$ fileset -v 'path:a1 or glob:b?'
@@ -53,7 +53,7 @@
(symbol 'glob')
(symbol 'b?')))
* matcher:
- <patternmatcher patterns='(?:a1(?:/|$)|b.$)'>
+ <patternmatcher patterns='a1(?:/|$)|b.$'>
a1
b1
b2
@@ -196,7 +196,7 @@
(string 'b'))))
* matcher:
<unionmatcher matchers=[
- <patternmatcher patterns='(?:a1$|a2$)'>,
+ <patternmatcher patterns='a1$|a2$'>,
<intersectionmatcher
m1=<predicatenmatcher pred=clean>,
m2=<predicatenmatcher pred=grep('b')>>]>
@@ -216,7 +216,7 @@
(symbol 'path')
(symbol 'b1')))
* matcher:
- <patternmatcher patterns='(?:a1$|a2$|b1(?:/|$))'>
+ <patternmatcher patterns='a1$|a2$|b1(?:/|$)'>
a1
a2
b1
@@ -237,7 +237,7 @@
(string 'b')))
* matcher:
<unionmatcher matchers=[
- <patternmatcher patterns='(?:a1$|b2$)'>,
+ <patternmatcher patterns='a1$|b2$'>,
<predicatenmatcher pred=grep('a')>,
<predicatenmatcher pred=grep('b')>]>
a1
@@ -254,8 +254,8 @@
(symbol 'a1'))
* matcher:
<differencematcher
- m1=<patternmatcher patterns='(?:a[^/]*$)'>,
- m2=<patternmatcher patterns='(?:a1$)'>>
+ m1=<patternmatcher patterns='a[^/]*$'>,
+ m2=<patternmatcher patterns='a1$'>>
a2
$ fileset -p optimized -s '!binary() and a*'
@@ -267,7 +267,7 @@
None))
* matcher:
<differencematcher
- m1=<patternmatcher patterns='(?:a[^/]*$)'>,
+ m1=<patternmatcher patterns='a[^/]*$'>,
m2=<predicatenmatcher pred=binary>>
a1
a2
@@ -286,8 +286,8 @@
(symbol 'a1'))
* matcher:
<differencematcher
- m1=<patternmatcher patterns='(?:a[^/]*$)'>,
- m2=<patternmatcher patterns='(?:a1$)'>>
+ m1=<patternmatcher patterns='a[^/]*$'>,
+ m2=<patternmatcher patterns='a1$'>>
a2
$ fileset -p analyzed -p optimized -s 'binary() - a*'
@@ -309,7 +309,7 @@
<intersectionmatcher
m1=<predicatenmatcher
pred=<not
- <patternmatcher patterns='(?:a[^/]*$)'>>>,
+ <patternmatcher patterns='a[^/]*$'>>>,
m2=<predicatenmatcher pred=binary>>
Test files status
@@ -551,7 +551,7 @@
None))
* matcher:
<intersectionmatcher
- m1=<patternmatcher patterns='(?:b[^/]*$)'>,
+ m1=<patternmatcher patterns='b[^/]*$'>,
m2=<predicatenmatcher pred=binary>>
bin
--- a/tests/test-hgignore.t Sun Dec 02 13:45:20 2018 -0800
+++ b/tests/test-hgignore.t Sun Dec 02 13:09:46 2018 -0800
@@ -197,7 +197,7 @@
A b.o
$ hg debugignore
- <includematcher includes='(?:(?:|.*/)[^/]*(?:/|$))'>
+ <includematcher includes='(?:|.*/)[^/]*(?:/|$)'>
$ hg debugignore b.o
b.o is ignored
--- a/tests/test-narrow-commit.t Sun Dec 02 13:45:20 2018 -0800
+++ b/tests/test-narrow-commit.t Sun Dec 02 13:09:46 2018 -0800
@@ -51,7 +51,7 @@
$ touch outside/f1
$ hg debugwalk -v -I 'relglob:f1'
* matcher:
- <includematcher includes='(?:(?:|.*/)f1(?:/|$))'>
+ <includematcher includes='(?:|.*/)f1(?:/|$)'>
f inside/f1 inside/f1
$ hg add .
$ hg add outside/f1
--- a/tests/test-walk.t Sun Dec 02 13:45:20 2018 -0800
+++ b/tests/test-walk.t Sun Dec 02 13:09:46 2018 -0800
@@ -46,7 +46,7 @@
f mammals/skunk mammals/skunk
$ hg debugwalk -v -I.
* matcher:
- <includematcher includes='(?:)'>
+ <includematcher includes=''>
f beans/black beans/black
f beans/borlotti beans/borlotti
f beans/kidney beans/kidney
@@ -82,7 +82,7 @@
* matcher:
<differencematcher
m1=<alwaysmatcher>,
- m2=<includematcher includes='(?:beans(?:/|$))'>>
+ m2=<includematcher includes='beans(?:/|$)'>>
f fennel ../fennel
f fenugreek ../fenugreek
f fiddlehead ../fiddlehead
@@ -92,39 +92,39 @@
f mammals/skunk skunk
$ hg debugwalk -v -I '*k'
* matcher:
- <includematcher includes='(?:mammals/[^/]*k(?:/|$))'>
+ <includematcher includes='mammals/[^/]*k(?:/|$)'>
f mammals/skunk skunk
$ hg debugwalk -v -I 'glob:*k'
* matcher:
- <includematcher includes='(?:mammals/[^/]*k(?:/|$))'>
+ <includematcher includes='mammals/[^/]*k(?:/|$)'>
f mammals/skunk skunk
$ hg debugwalk -v -I 'relglob:*k'
* matcher:
- <includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>
+ <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(?:/|$))'>>
+ m1=<patternmatcher patterns='mammals(?:/|$)'>,
+ m2=<includematcher includes='(?:|.*/)[^/]*k(?:/|$)'>>
f mammals/skunk skunk
$ hg debugwalk -v -I 're:.*k$'
* matcher:
- <includematcher includes='(?:.*k$)'>
+ <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$)'>
+ <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(?:/|$))'>
+ <includematcher includes='beans(?:/|$)'>
f beans/black ../beans/black
f beans/borlotti ../beans/borlotti
f beans/kidney ../beans/kidney
@@ -133,7 +133,7 @@
f beans/turtle ../beans/turtle
$ hg debugwalk -v -I 'relpath:detour/../../beans'
* matcher:
- <includematcher includes='(?:beans(?:/|$))'>
+ <includematcher includes='beans(?:/|$)'>
f beans/black ../beans/black
f beans/borlotti ../beans/borlotti
f beans/kidney ../beans/kidney
@@ -246,21 +246,21 @@
$ hg debugwalk -v .
* matcher:
- <patternmatcher patterns='(?:mammals(?:/|$))'>
+ <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(?:/|$))'>
+ <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(?:/|$))'>
+ <patternmatcher patterns='mammals/Procyonidae(?:/|$)'>
f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
f mammals/Procyonidae/raccoon Procyonidae/raccoon
@@ -268,13 +268,13 @@
$ cd Procyonidae
$ hg debugwalk -v .
* matcher:
- <patternmatcher patterns='(?:mammals/Procyonidae(?:/|$))'>
+ <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(?:/|$))'>
+ <patternmatcher patterns='mammals(?:/|$)'>
f mammals/Procyonidae/cacomistle cacomistle
f mammals/Procyonidae/coatimundi coatimundi
f mammals/Procyonidae/raccoon raccoon
@@ -283,7 +283,7 @@
$ hg debugwalk -v ../beans
* matcher:
- <patternmatcher patterns='(?:beans(?:/|$))'>
+ <patternmatcher patterns='beans(?:/|$)'>
f beans/black ../beans/black
f beans/borlotti ../beans/borlotti
f beans/kidney ../beans/kidney
@@ -292,7 +292,7 @@
f beans/turtle ../beans/turtle
$ hg debugwalk -v .
* matcher:
- <patternmatcher patterns='(?:mammals(?:/|$))'>
+ <patternmatcher patterns='mammals(?:/|$)'>
f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
f mammals/Procyonidae/raccoon Procyonidae/raccoon
@@ -307,7 +307,7 @@
$ hg debugwalk -v -Ibeans
* matcher:
- <includematcher includes='(?:beans(?:/|$))'>
+ <includematcher includes='beans(?:/|$)'>
f beans/black beans/black
f beans/borlotti beans/borlotti
f beans/kidney beans/kidney
@@ -316,39 +316,39 @@
f beans/turtle beans/turtle
$ hg debugwalk -v -I '{*,{b,m}*/*}k'
* matcher:
- <includematcher includes='(?:(?:[^/]*|(?:b|m)[^/]*/[^/]*)k(?:/|$))'>
+ <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(?:/|$))'>>
+ m1=<patternmatcher patterns='mammals(?:/|$)'>,
+ m2=<includematcher includes='beans(?:/|$)'>>
$ hg debugwalk -v -Inon-existent
* matcher:
- <includematcher includes='(?:non\\-existent(?:/|$))'>
+ <includematcher includes='non\\-existent(?:/|$)'>
$ hg debugwalk -v -Inon-existent -Ibeans/black
* matcher:
- <includematcher includes='(?:non\\-existent(?:/|$)|beans/black(?:/|$))'>
+ <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(?:/|$))'>>
+ 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(?:/|$))'>>
+ 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(?:/|$))'>>
+ m1=<patternmatcher patterns='beans(?:/|$)'>,
+ m2=<includematcher includes='beans/black(?:/|$)'>>
f beans/borlotti beans/borlotti
f beans/kidney beans/kidney
f beans/navy beans/navy
@@ -357,8 +357,8 @@
$ hg debugwalk -v -Xbeans/black -Ibeans
* matcher:
<differencematcher
- m1=<includematcher includes='(?:beans(?:/|$))'>,
- m2=<includematcher includes='(?:beans/black(?:/|$))'>>
+ m1=<includematcher includes='beans(?:/|$)'>,
+ m2=<includematcher includes='beans/black(?:/|$)'>>
f beans/borlotti beans/borlotti
f beans/kidney beans/kidney
f beans/navy beans/navy
@@ -367,37 +367,37 @@
$ hg debugwalk -v -Xbeans/black beans/black
* matcher:
<differencematcher
- m1=<patternmatcher patterns='(?:beans/black(?:/|$))'>,
- m2=<includematcher includes='(?:beans/black(?:/|$))'>>
+ 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(?:/|$))'>>
+ 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(?:/|$))'>>
+ 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(?:/|$))'>>
+ m1=<includematcher includes='beans/black(?:/|$)'>,
+ m2=<includematcher includes='beans(?:/|$)'>>
$ hg debugwalk -v 'glob:mammals/../beans/b*'
* matcher:
- <patternmatcher patterns='(?:beans/b[^/]*$)'>
+ <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(?:/|$))'>>
+ m1=<patternmatcher patterns='mammals(?:/|$)'>,
+ m2=<includematcher includes='[^/]*/Procyonidae(?:/|$)'>>
f mammals/skunk mammals/skunk
$ hg debugwalk -v path:mammals
* matcher:
- <patternmatcher patterns='(?:mammals(?:/|$))'>
+ <patternmatcher patterns='mammals(?:/|$)'>
f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
@@ -426,29 +426,29 @@
$ hg debugwalk -v fennel -X fennel
* matcher:
<differencematcher
- m1=<patternmatcher patterns='(?:fennel(?:/|$))'>,
- m2=<includematcher includes='(?:fennel(?:/|$))'>>
+ m1=<patternmatcher patterns='fennel(?:/|$)'>,
+ m2=<includematcher includes='fennel(?:/|$)'>>
$ hg debugwalk -v fennel -X 'f*'
* matcher:
<differencematcher
- m1=<patternmatcher patterns='(?:fennel(?:/|$))'>,
- m2=<includematcher includes='(?:f[^/]*(?:/|$))'>>
+ 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(?:/|$))'>>
+ 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(?:/|$))'>>
+ m1=<includematcher includes='beans/black(?:/|$)'>,
+ m2=<includematcher includes='beans(?:/|$)'>>
Test absolute paths:
$ hg debugwalk -v `pwd`/beans
* matcher:
- <patternmatcher patterns='(?:beans(?:/|$))'>
+ <patternmatcher patterns='beans(?:/|$)'>
f beans/black beans/black
f beans/borlotti beans/borlotti
f beans/kidney beans/kidney
@@ -463,7 +463,7 @@
$ hg debugwalk -v glob:\*
* matcher:
- <patternmatcher patterns='(?:[^/]*$)'>
+ <patternmatcher patterns='[^/]*$'>
f fennel fennel
f fenugreek fenugreek
f fiddlehead fiddlehead
@@ -474,22 +474,22 @@
warning: filename contains ':', which is reserved on Windows: 'glob:glob'
$ hg debugwalk -v glob:\*
* matcher:
- <patternmatcher patterns='(?:[^/]*$)'>
+ <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$)'>
+ <patternmatcher patterns='glob$'>
glob: $ENOENT$
$ hg debugwalk -v glob:glob:glob
* matcher:
- <patternmatcher patterns='(?:glob:glob$)'>
+ <patternmatcher patterns='glob:glob$'>
f glob:glob glob:glob exact
$ hg debugwalk -v path:glob:glob
* matcher:
- <patternmatcher patterns='(?:glob:glob(?:/|$))'>
+ <patternmatcher patterns='glob:glob(?:/|$)'>
f glob:glob glob:glob exact
$ rm glob:glob
$ hg addremove
@@ -498,45 +498,45 @@
$ hg debugwalk -v 'glob:**e'
* matcher:
- <patternmatcher patterns='(?:.*e$)'>
+ <patternmatcher patterns='.*e$'>
f beans/turtle beans/turtle
f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
$ hg debugwalk -v 're:.*[kb]$'
* matcher:
- <patternmatcher patterns='(?:.*[kb]$)'>
+ <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(?:/|$))'>
+ <patternmatcher patterns='beans/black(?:/|$)'>
f beans/black beans/black exact
$ hg debugwalk -v path:beans//black
* matcher:
- <patternmatcher patterns='(?:beans/black(?:/|$))'>
+ <patternmatcher patterns='beans/black(?:/|$)'>
f beans/black beans/black exact
$ hg debugwalk -v relglob:Procyonidae
* matcher:
- <patternmatcher patterns='(?:(?:|.*/)Procyonidae$)'>
+ <patternmatcher patterns='(?:|.*/)Procyonidae$'>
$ hg debugwalk -v 'relglob:Procyonidae/**'
* matcher:
- <patternmatcher patterns='(?:(?:|.*/)Procyonidae/.*$)'>
+ <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(?:/|$))'>
+ <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/[^/]*$)'>
+ <patternmatcher patterns='beans(?:/|$)|beans/[^/]*$'>
f beans/black beans/black
f beans/borlotti beans/borlotti
f beans/kidney beans/kidney
@@ -545,14 +545,14 @@
f beans/turtle beans/turtle
$ hg debugwalk -v 'glob:mamm**'
* matcher:
- <patternmatcher patterns='(?:mamm.*$)'>
+ <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(?:/|$))'>
+ <patternmatcher patterns='mamm.*$|fennel(?:/|$)'>
f fennel fennel exact
f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
@@ -560,34 +560,34 @@
f mammals/skunk mammals/skunk
$ hg debugwalk -v 'glob:j*'
* matcher:
- <patternmatcher patterns='(?:j[^/]*$)'>
+ <patternmatcher patterns='j[^/]*$'>
$ hg debugwalk -v NOEXIST
* matcher:
- <patternmatcher patterns='(?:NOEXIST(?:/|$))'>
+ <patternmatcher patterns='NOEXIST(?:/|$)'>
NOEXIST: * (glob)
#if fifo
$ mkfifo fifo
$ hg debugwalk -v fifo
* matcher:
- <patternmatcher patterns='(?:fifo(?:/|$))'>
+ <patternmatcher patterns='fifo(?:/|$)'>
fifo: unsupported file type (type is fifo)
#endif
$ rm fenugreek
$ hg debugwalk -v fenugreek
* matcher:
- <patternmatcher patterns='(?:fenugreek(?:/|$))'>
+ <patternmatcher patterns='fenugreek(?:/|$)'>
f fenugreek fenugreek exact
$ hg rm fenugreek
$ hg debugwalk -v fenugreek
* matcher:
- <patternmatcher patterns='(?:fenugreek(?:/|$))'>
+ <patternmatcher patterns='fenugreek(?:/|$)'>
f fenugreek fenugreek exact
$ touch new
$ hg debugwalk -v new
* matcher:
- <patternmatcher patterns='(?:new(?:/|$))'>
+ <patternmatcher patterns='new(?:/|$)'>
f new new exact
$ mkdir ignored
@@ -595,10 +595,10 @@
$ echo '^ignored$' > .hgignore
$ hg debugwalk -v ignored
* matcher:
- <patternmatcher patterns='(?:ignored(?:/|$))'>
+ <patternmatcher patterns='ignored(?:/|$)'>
$ hg debugwalk -v ignored/file
* matcher:
- <patternmatcher patterns='(?:ignored/file(?:/|$))'>
+ <patternmatcher patterns='ignored/file(?:/|$)'>
f ignored/file ignored/file exact
Test listfile and listfile0
@@ -606,13 +606,13 @@
$ "$PYTHON" -c "open('listfile0', 'wb').write(b'fenugreek\0new\0')"
$ hg debugwalk -v -I 'listfile0:listfile0'
* matcher:
- <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$))'>
+ <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(?:/|$))'>
+ <includematcher includes='fenugreek(?:/|$)|new(?:/|$)|mammals/skunk(?:/|$)'>
f fenugreek fenugreek
f mammals/skunk mammals/skunk
f new new
@@ -620,17 +620,17 @@
$ cd ..
$ hg debugwalk -v -R t t/mammals/skunk
* matcher:
- <patternmatcher patterns='(?:mammals/skunk(?:/|$))'>
+ <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(?:/|$))'>
+ <patternmatcher patterns='mammals/skunk(?:/|$)'>
f mammals/skunk ../t/mammals/skunk exact
$ hg debugwalk -v --cwd ../t mammals/skunk
* matcher:
- <patternmatcher patterns='(?:mammals/skunk(?:/|$))'>
+ <patternmatcher patterns='mammals/skunk(?:/|$)'>
f mammals/skunk mammals/skunk exact
$ cd ..