diff --git a/mercurial/match.py b/mercurial/match.py --- a/mercurial/match.py +++ b/mercurial/match.py @@ -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") % diff --git a/tests/test-fileset.t b/tests/test-fileset.t --- a/tests/test-fileset.t +++ b/tests/test-fileset.t @@ -19,18 +19,18 @@ $ fileset -v a1 (symbol 'a1') * matcher: - + a1 $ fileset -v 'a*' (symbol 'a*') * matcher: - + a1 a2 $ fileset -v '"re:a\d"' (string 're:a\\d') * matcher: - + a1 a2 $ fileset -v '!re:"a\d"' @@ -41,7 +41,7 @@ * matcher: >> + >> b1 b2 $ fileset -v 'path:a1 or glob:b?' @@ -53,7 +53,7 @@ (symbol 'glob') (symbol 'b?'))) * matcher: - + a1 b1 b2 @@ -196,7 +196,7 @@ (string 'b')))) * matcher: , + , , m2=>]> @@ -216,7 +216,7 @@ (symbol 'path') (symbol 'b1'))) * matcher: - + a1 a2 b1 @@ -237,7 +237,7 @@ (string 'b'))) * matcher: , + , , ]> a1 @@ -254,8 +254,8 @@ (symbol 'a1')) * matcher: , - m2=> + m1=, + m2=> a2 $ fileset -p optimized -s '!binary() and a*' @@ -267,7 +267,7 @@ None)) * matcher: , + m1=, m2=> a1 a2 @@ -286,8 +286,8 @@ (symbol 'a1')) * matcher: , - m2=> + m1=, + m2=> a2 $ fileset -p analyzed -p optimized -s 'binary() - a*' @@ -309,7 +309,7 @@ >>, + >>, m2=> Test files status @@ -551,7 +551,7 @@ None)) * matcher: , + m1=, m2=> bin diff --git a/tests/test-hgignore.t b/tests/test-hgignore.t --- a/tests/test-hgignore.t +++ b/tests/test-hgignore.t @@ -197,7 +197,7 @@ A b.o $ hg debugignore - + $ hg debugignore b.o b.o is ignored diff --git a/tests/test-narrow-commit.t b/tests/test-narrow-commit.t --- a/tests/test-narrow-commit.t +++ b/tests/test-narrow-commit.t @@ -51,7 +51,7 @@ $ touch outside/f1 $ hg debugwalk -v -I 'relglob:f1' * matcher: - + f inside/f1 inside/f1 $ hg add . $ hg add outside/f1 diff --git a/tests/test-walk.t b/tests/test-walk.t --- a/tests/test-walk.t +++ b/tests/test-walk.t @@ -46,7 +46,7 @@ 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 @@ -82,7 +82,7 @@ * matcher: , - m2=> + m2=> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead @@ -92,39 +92,39 @@ 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=> + m1=, + 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 @@ -133,7 +133,7 @@ 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 @@ -246,21 +246,21 @@ $ 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 @@ -268,13 +268,13 @@ $ 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 @@ -283,7 +283,7 @@ $ hg debugwalk -v ../beans * matcher: - + 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: - + 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: - + 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: - + f beans/black beans/black f fenugreek fenugreek f mammals/skunk mammals/skunk $ hg debugwalk -v -Ibeans mammals * matcher: , - m2=> + m1=, + 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=> + m1=, + m2=> f beans/black beans/black exact $ hg debugwalk -v -Ibeans/black beans * matcher: , - m2=> + m1=, + m2=> f beans/black beans/black $ hg debugwalk -v -Xbeans/black beans * matcher: , - m2=> + m1=, + m2=> 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: , - m2=> + m1=, + m2=> 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: , - m2=> + m1=, + m2=> $ hg debugwalk -v -Xbeans/black -Ibeans/black * matcher: , - m2=> + m1=, + m2=> $ hg debugwalk -v -Xbeans beans/black * matcher: , - m2=> + m1=, + m2=> $ hg debugwalk -v -Xbeans -Ibeans/black * matcher: , - m2=> + m1=, + 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=> + m1=, + 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 @@ -426,29 +426,29 @@ $ hg debugwalk -v fennel -X fennel * matcher: , - m2=> + m1=, + m2=> $ hg debugwalk -v fennel -X 'f*' * matcher: , - m2=> + m1=, + m2=> $ hg debugwalk -v beans/black -X 'path:beans' * matcher: , - m2=> + m1=, + m2=> $ hg debugwalk -v -I 'path:beans/black' -X 'path:beans' * matcher: , - m2=> + m1=, + 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 @@ -463,7 +463,7 @@ $ hg debugwalk -v glob:\* * matcher: - + 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: - + 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 @@ -498,45 +498,45 @@ $ 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 @@ -545,14 +545,14 @@ 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 @@ -560,34 +560,34 @@ 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 @@ -595,10 +595,10 @@ $ echo '^ignored$' > .hgignore $ hg debugwalk -v ignored * matcher: - + $ hg debugwalk -v ignored/file * matcher: - + 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: - + 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 @@ -620,17 +620,17 @@ $ 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 ..