##// END OF EJS Templates
match: drop unnecessary wrapping of regex in group...
Martin von Zweigbergk -
r40818:3984409e default
parent child Browse files
Show More
@@ -1185,11 +1185,10 b' def _buildmatch(kindpats, globsuffix, li'
1185 return regex, lambda f: any(mf(f) for mf in matchfuncs)
1185 return regex, lambda f: any(mf(f) for mf in matchfuncs)
1186
1186
1187 MAX_RE_SIZE = 20000
1187 MAX_RE_SIZE = 20000
1188 _BASE_SIZE = len('(?:)')
1189
1188
1190 def _joinregexes(regexps):
1189 def _joinregexes(regexps):
1191 """gather multiple regular expressions into a single one"""
1190 """gather multiple regular expressions into a single one"""
1192 return '(?:%s)' % '|'.join(regexps)
1191 return '|'.join(regexps)
1193
1192
1194 def _buildregexmatch(kindpats, globsuffix):
1193 def _buildregexmatch(kindpats, globsuffix):
1195 """Build a match function from a list of kinds and kindpats,
1194 """Build a match function from a list of kinds and kindpats,
@@ -1209,17 +1208,17 b' def _buildregexmatch(kindpats, globsuffi'
1209 fullregexp = _joinregexes(regexps)
1208 fullregexp = _joinregexes(regexps)
1210
1209
1211 startidx = 0
1210 startidx = 0
1212 groupsize = _BASE_SIZE
1211 groupsize = 0
1213 for idx, r in enumerate(regexps):
1212 for idx, r in enumerate(regexps):
1214 piecesize = len(r)
1213 piecesize = len(r)
1215 if (piecesize + _BASE_SIZE) > MAX_RE_SIZE:
1214 if piecesize > MAX_RE_SIZE:
1216 msg = _("matcher pattern is too long (%d bytes)") % piecesize
1215 msg = _("matcher pattern is too long (%d bytes)") % piecesize
1217 raise error.Abort(msg)
1216 raise error.Abort(msg)
1218 elif (groupsize + piecesize) > MAX_RE_SIZE:
1217 elif (groupsize + piecesize) > MAX_RE_SIZE:
1219 group = regexps[startidx:idx]
1218 group = regexps[startidx:idx]
1220 allgroups.append(_joinregexes(group))
1219 allgroups.append(_joinregexes(group))
1221 startidx = idx
1220 startidx = idx
1222 groupsize = _BASE_SIZE
1221 groupsize = 0
1223 groupsize += piecesize + 1
1222 groupsize += piecesize + 1
1224
1223
1225 if startidx == 0:
1224 if startidx == 0:
@@ -1233,7 +1232,7 b' def _buildregexmatch(kindpats, globsuffi'
1233 except re.error:
1232 except re.error:
1234 for k, p, s in kindpats:
1233 for k, p, s in kindpats:
1235 try:
1234 try:
1236 _rematcher('(?:%s)' % _regex(k, p, globsuffix))
1235 _rematcher(_regex(k, p, globsuffix))
1237 except re.error:
1236 except re.error:
1238 if s:
1237 if s:
1239 raise error.Abort(_("%s: invalid pattern (%s): %s") %
1238 raise error.Abort(_("%s: invalid pattern (%s): %s") %
@@ -19,18 +19,18 b' Test operators and basic patterns'
19 $ fileset -v a1
19 $ fileset -v a1
20 (symbol 'a1')
20 (symbol 'a1')
21 * matcher:
21 * matcher:
22 <patternmatcher patterns='(?:a1$)'>
22 <patternmatcher patterns='a1$'>
23 a1
23 a1
24 $ fileset -v 'a*'
24 $ fileset -v 'a*'
25 (symbol 'a*')
25 (symbol 'a*')
26 * matcher:
26 * matcher:
27 <patternmatcher patterns='(?:a[^/]*$)'>
27 <patternmatcher patterns='a[^/]*$'>
28 a1
28 a1
29 a2
29 a2
30 $ fileset -v '"re:a\d"'
30 $ fileset -v '"re:a\d"'
31 (string 're:a\\d')
31 (string 're:a\\d')
32 * matcher:
32 * matcher:
33 <patternmatcher patterns='(?:a\\d)'>
33 <patternmatcher patterns='a\\d'>
34 a1
34 a1
35 a2
35 a2
36 $ fileset -v '!re:"a\d"'
36 $ fileset -v '!re:"a\d"'
@@ -41,7 +41,7 b' Test operators and basic patterns'
41 * matcher:
41 * matcher:
42 <predicatenmatcher
42 <predicatenmatcher
43 pred=<not
43 pred=<not
44 <patternmatcher patterns='(?:a\\d)'>>>
44 <patternmatcher patterns='a\\d'>>>
45 b1
45 b1
46 b2
46 b2
47 $ fileset -v 'path:a1 or glob:b?'
47 $ fileset -v 'path:a1 or glob:b?'
@@ -53,7 +53,7 b' Test operators and basic patterns'
53 (symbol 'glob')
53 (symbol 'glob')
54 (symbol 'b?')))
54 (symbol 'b?')))
55 * matcher:
55 * matcher:
56 <patternmatcher patterns='(?:a1(?:/|$)|b.$)'>
56 <patternmatcher patterns='a1(?:/|$)|b.$'>
57 a1
57 a1
58 b1
58 b1
59 b2
59 b2
@@ -196,7 +196,7 b' Show parsed tree at stages:'
196 (string 'b'))))
196 (string 'b'))))
197 * matcher:
197 * matcher:
198 <unionmatcher matchers=[
198 <unionmatcher matchers=[
199 <patternmatcher patterns='(?:a1$|a2$)'>,
199 <patternmatcher patterns='a1$|a2$'>,
200 <intersectionmatcher
200 <intersectionmatcher
201 m1=<predicatenmatcher pred=clean>,
201 m1=<predicatenmatcher pred=clean>,
202 m2=<predicatenmatcher pred=grep('b')>>]>
202 m2=<predicatenmatcher pred=grep('b')>>]>
@@ -216,7 +216,7 b' Union of basic patterns:'
216 (symbol 'path')
216 (symbol 'path')
217 (symbol 'b1')))
217 (symbol 'b1')))
218 * matcher:
218 * matcher:
219 <patternmatcher patterns='(?:a1$|a2$|b1(?:/|$))'>
219 <patternmatcher patterns='a1$|a2$|b1(?:/|$)'>
220 a1
220 a1
221 a2
221 a2
222 b1
222 b1
@@ -237,7 +237,7 b' OR expression should be reordered by wei'
237 (string 'b')))
237 (string 'b')))
238 * matcher:
238 * matcher:
239 <unionmatcher matchers=[
239 <unionmatcher matchers=[
240 <patternmatcher patterns='(?:a1$|b2$)'>,
240 <patternmatcher patterns='a1$|b2$'>,
241 <predicatenmatcher pred=grep('a')>,
241 <predicatenmatcher pred=grep('a')>,
242 <predicatenmatcher pred=grep('b')>]>
242 <predicatenmatcher pred=grep('b')>]>
243 a1
243 a1
@@ -254,8 +254,8 b" Use differencematcher for 'x and not y':"
254 (symbol 'a1'))
254 (symbol 'a1'))
255 * matcher:
255 * matcher:
256 <differencematcher
256 <differencematcher
257 m1=<patternmatcher patterns='(?:a[^/]*$)'>,
257 m1=<patternmatcher patterns='a[^/]*$'>,
258 m2=<patternmatcher patterns='(?:a1$)'>>
258 m2=<patternmatcher patterns='a1$'>>
259 a2
259 a2
260
260
261 $ fileset -p optimized -s '!binary() and a*'
261 $ fileset -p optimized -s '!binary() and a*'
@@ -267,7 +267,7 b" Use differencematcher for 'x and not y':"
267 None))
267 None))
268 * matcher:
268 * matcher:
269 <differencematcher
269 <differencematcher
270 m1=<patternmatcher patterns='(?:a[^/]*$)'>,
270 m1=<patternmatcher patterns='a[^/]*$'>,
271 m2=<predicatenmatcher pred=binary>>
271 m2=<predicatenmatcher pred=binary>>
272 a1
272 a1
273 a2
273 a2
@@ -286,8 +286,8 b" Use differencematcher for 'x and not y':"
286 (symbol 'a1'))
286 (symbol 'a1'))
287 * matcher:
287 * matcher:
288 <differencematcher
288 <differencematcher
289 m1=<patternmatcher patterns='(?:a[^/]*$)'>,
289 m1=<patternmatcher patterns='a[^/]*$'>,
290 m2=<patternmatcher patterns='(?:a1$)'>>
290 m2=<patternmatcher patterns='a1$'>>
291 a2
291 a2
292
292
293 $ fileset -p analyzed -p optimized -s 'binary() - a*'
293 $ fileset -p analyzed -p optimized -s 'binary() - a*'
@@ -309,7 +309,7 b" Use differencematcher for 'x and not y':"
309 <intersectionmatcher
309 <intersectionmatcher
310 m1=<predicatenmatcher
310 m1=<predicatenmatcher
311 pred=<not
311 pred=<not
312 <patternmatcher patterns='(?:a[^/]*$)'>>>,
312 <patternmatcher patterns='a[^/]*$'>>>,
313 m2=<predicatenmatcher pred=binary>>
313 m2=<predicatenmatcher pred=binary>>
314
314
315 Test files status
315 Test files status
@@ -551,7 +551,7 b' Test files properties'
551 None))
551 None))
552 * matcher:
552 * matcher:
553 <intersectionmatcher
553 <intersectionmatcher
554 m1=<patternmatcher patterns='(?:b[^/]*$)'>,
554 m1=<patternmatcher patterns='b[^/]*$'>,
555 m2=<predicatenmatcher pred=binary>>
555 m2=<predicatenmatcher pred=binary>>
556 bin
556 bin
557
557
@@ -197,7 +197,7 b' Test relative ignore path (issue4473):'
197 A b.o
197 A b.o
198
198
199 $ hg debugignore
199 $ hg debugignore
200 <includematcher includes='(?:(?:|.*/)[^/]*(?:/|$))'>
200 <includematcher includes='(?:|.*/)[^/]*(?:/|$)'>
201
201
202 $ hg debugignore b.o
202 $ hg debugignore b.o
203 b.o is ignored
203 b.o is ignored
@@ -51,7 +51,7 b' Can not modify dirstate outside'
51 $ touch outside/f1
51 $ touch outside/f1
52 $ hg debugwalk -v -I 'relglob:f1'
52 $ hg debugwalk -v -I 'relglob:f1'
53 * matcher:
53 * matcher:
54 <includematcher includes='(?:(?:|.*/)f1(?:/|$))'>
54 <includematcher includes='(?:|.*/)f1(?:/|$)'>
55 f inside/f1 inside/f1
55 f inside/f1 inside/f1
56 $ hg add .
56 $ hg add .
57 $ hg add outside/f1
57 $ hg add outside/f1
@@ -46,7 +46,7 b''
46 f mammals/skunk mammals/skunk
46 f mammals/skunk mammals/skunk
47 $ hg debugwalk -v -I.
47 $ hg debugwalk -v -I.
48 * matcher:
48 * matcher:
49 <includematcher includes='(?:)'>
49 <includematcher includes=''>
50 f beans/black beans/black
50 f beans/black beans/black
51 f beans/borlotti beans/borlotti
51 f beans/borlotti beans/borlotti
52 f beans/kidney beans/kidney
52 f beans/kidney beans/kidney
@@ -82,7 +82,7 b''
82 * matcher:
82 * matcher:
83 <differencematcher
83 <differencematcher
84 m1=<alwaysmatcher>,
84 m1=<alwaysmatcher>,
85 m2=<includematcher includes='(?:beans(?:/|$))'>>
85 m2=<includematcher includes='beans(?:/|$)'>>
86 f fennel ../fennel
86 f fennel ../fennel
87 f fenugreek ../fenugreek
87 f fenugreek ../fenugreek
88 f fiddlehead ../fiddlehead
88 f fiddlehead ../fiddlehead
@@ -92,39 +92,39 b''
92 f mammals/skunk skunk
92 f mammals/skunk skunk
93 $ hg debugwalk -v -I '*k'
93 $ hg debugwalk -v -I '*k'
94 * matcher:
94 * matcher:
95 <includematcher includes='(?:mammals/[^/]*k(?:/|$))'>
95 <includematcher includes='mammals/[^/]*k(?:/|$)'>
96 f mammals/skunk skunk
96 f mammals/skunk skunk
97 $ hg debugwalk -v -I 'glob:*k'
97 $ hg debugwalk -v -I 'glob:*k'
98 * matcher:
98 * matcher:
99 <includematcher includes='(?:mammals/[^/]*k(?:/|$))'>
99 <includematcher includes='mammals/[^/]*k(?:/|$)'>
100 f mammals/skunk skunk
100 f mammals/skunk skunk
101 $ hg debugwalk -v -I 'relglob:*k'
101 $ hg debugwalk -v -I 'relglob:*k'
102 * matcher:
102 * matcher:
103 <includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>
103 <includematcher includes='(?:|.*/)[^/]*k(?:/|$)'>
104 f beans/black ../beans/black
104 f beans/black ../beans/black
105 f fenugreek ../fenugreek
105 f fenugreek ../fenugreek
106 f mammals/skunk skunk
106 f mammals/skunk skunk
107 $ hg debugwalk -v -I 'relglob:*k' .
107 $ hg debugwalk -v -I 'relglob:*k' .
108 * matcher:
108 * matcher:
109 <intersectionmatcher
109 <intersectionmatcher
110 m1=<patternmatcher patterns='(?:mammals(?:/|$))'>,
110 m1=<patternmatcher patterns='mammals(?:/|$)'>,
111 m2=<includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>>
111 m2=<includematcher includes='(?:|.*/)[^/]*k(?:/|$)'>>
112 f mammals/skunk skunk
112 f mammals/skunk skunk
113 $ hg debugwalk -v -I 're:.*k$'
113 $ hg debugwalk -v -I 're:.*k$'
114 * matcher:
114 * matcher:
115 <includematcher includes='(?:.*k$)'>
115 <includematcher includes='.*k$'>
116 f beans/black ../beans/black
116 f beans/black ../beans/black
117 f fenugreek ../fenugreek
117 f fenugreek ../fenugreek
118 f mammals/skunk skunk
118 f mammals/skunk skunk
119 $ hg debugwalk -v -I 'relre:.*k$'
119 $ hg debugwalk -v -I 'relre:.*k$'
120 * matcher:
120 * matcher:
121 <includematcher includes='(?:.*.*k$)'>
121 <includematcher includes='.*.*k$'>
122 f beans/black ../beans/black
122 f beans/black ../beans/black
123 f fenugreek ../fenugreek
123 f fenugreek ../fenugreek
124 f mammals/skunk skunk
124 f mammals/skunk skunk
125 $ hg debugwalk -v -I 'path:beans'
125 $ hg debugwalk -v -I 'path:beans'
126 * matcher:
126 * matcher:
127 <includematcher includes='(?:beans(?:/|$))'>
127 <includematcher includes='beans(?:/|$)'>
128 f beans/black ../beans/black
128 f beans/black ../beans/black
129 f beans/borlotti ../beans/borlotti
129 f beans/borlotti ../beans/borlotti
130 f beans/kidney ../beans/kidney
130 f beans/kidney ../beans/kidney
@@ -133,7 +133,7 b''
133 f beans/turtle ../beans/turtle
133 f beans/turtle ../beans/turtle
134 $ hg debugwalk -v -I 'relpath:detour/../../beans'
134 $ hg debugwalk -v -I 'relpath:detour/../../beans'
135 * matcher:
135 * matcher:
136 <includematcher includes='(?:beans(?:/|$))'>
136 <includematcher includes='beans(?:/|$)'>
137 f beans/black ../beans/black
137 f beans/black ../beans/black
138 f beans/borlotti ../beans/borlotti
138 f beans/borlotti ../beans/borlotti
139 f beans/kidney ../beans/kidney
139 f beans/kidney ../beans/kidney
@@ -246,21 +246,21 b''
246
246
247 $ hg debugwalk -v .
247 $ hg debugwalk -v .
248 * matcher:
248 * matcher:
249 <patternmatcher patterns='(?:mammals(?:/|$))'>
249 <patternmatcher patterns='mammals(?:/|$)'>
250 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
250 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
251 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
251 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
252 f mammals/Procyonidae/raccoon Procyonidae/raccoon
252 f mammals/Procyonidae/raccoon Procyonidae/raccoon
253 f mammals/skunk skunk
253 f mammals/skunk skunk
254 $ hg debugwalk -v -I.
254 $ hg debugwalk -v -I.
255 * matcher:
255 * matcher:
256 <includematcher includes='(?:mammals(?:/|$))'>
256 <includematcher includes='mammals(?:/|$)'>
257 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
257 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
258 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
258 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
259 f mammals/Procyonidae/raccoon Procyonidae/raccoon
259 f mammals/Procyonidae/raccoon Procyonidae/raccoon
260 f mammals/skunk skunk
260 f mammals/skunk skunk
261 $ hg debugwalk -v Procyonidae
261 $ hg debugwalk -v Procyonidae
262 * matcher:
262 * matcher:
263 <patternmatcher patterns='(?:mammals/Procyonidae(?:/|$))'>
263 <patternmatcher patterns='mammals/Procyonidae(?:/|$)'>
264 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
264 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
265 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
265 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
266 f mammals/Procyonidae/raccoon Procyonidae/raccoon
266 f mammals/Procyonidae/raccoon Procyonidae/raccoon
@@ -268,13 +268,13 b''
268 $ cd Procyonidae
268 $ cd Procyonidae
269 $ hg debugwalk -v .
269 $ hg debugwalk -v .
270 * matcher:
270 * matcher:
271 <patternmatcher patterns='(?:mammals/Procyonidae(?:/|$))'>
271 <patternmatcher patterns='mammals/Procyonidae(?:/|$)'>
272 f mammals/Procyonidae/cacomistle cacomistle
272 f mammals/Procyonidae/cacomistle cacomistle
273 f mammals/Procyonidae/coatimundi coatimundi
273 f mammals/Procyonidae/coatimundi coatimundi
274 f mammals/Procyonidae/raccoon raccoon
274 f mammals/Procyonidae/raccoon raccoon
275 $ hg debugwalk -v ..
275 $ hg debugwalk -v ..
276 * matcher:
276 * matcher:
277 <patternmatcher patterns='(?:mammals(?:/|$))'>
277 <patternmatcher patterns='mammals(?:/|$)'>
278 f mammals/Procyonidae/cacomistle cacomistle
278 f mammals/Procyonidae/cacomistle cacomistle
279 f mammals/Procyonidae/coatimundi coatimundi
279 f mammals/Procyonidae/coatimundi coatimundi
280 f mammals/Procyonidae/raccoon raccoon
280 f mammals/Procyonidae/raccoon raccoon
@@ -283,7 +283,7 b''
283
283
284 $ hg debugwalk -v ../beans
284 $ hg debugwalk -v ../beans
285 * matcher:
285 * matcher:
286 <patternmatcher patterns='(?:beans(?:/|$))'>
286 <patternmatcher patterns='beans(?:/|$)'>
287 f beans/black ../beans/black
287 f beans/black ../beans/black
288 f beans/borlotti ../beans/borlotti
288 f beans/borlotti ../beans/borlotti
289 f beans/kidney ../beans/kidney
289 f beans/kidney ../beans/kidney
@@ -292,7 +292,7 b''
292 f beans/turtle ../beans/turtle
292 f beans/turtle ../beans/turtle
293 $ hg debugwalk -v .
293 $ hg debugwalk -v .
294 * matcher:
294 * matcher:
295 <patternmatcher patterns='(?:mammals(?:/|$))'>
295 <patternmatcher patterns='mammals(?:/|$)'>
296 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
296 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
297 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
297 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
298 f mammals/Procyonidae/raccoon Procyonidae/raccoon
298 f mammals/Procyonidae/raccoon Procyonidae/raccoon
@@ -307,7 +307,7 b''
307
307
308 $ hg debugwalk -v -Ibeans
308 $ hg debugwalk -v -Ibeans
309 * matcher:
309 * matcher:
310 <includematcher includes='(?:beans(?:/|$))'>
310 <includematcher includes='beans(?:/|$)'>
311 f beans/black beans/black
311 f beans/black beans/black
312 f beans/borlotti beans/borlotti
312 f beans/borlotti beans/borlotti
313 f beans/kidney beans/kidney
313 f beans/kidney beans/kidney
@@ -316,39 +316,39 b''
316 f beans/turtle beans/turtle
316 f beans/turtle beans/turtle
317 $ hg debugwalk -v -I '{*,{b,m}*/*}k'
317 $ hg debugwalk -v -I '{*,{b,m}*/*}k'
318 * matcher:
318 * matcher:
319 <includematcher includes='(?:(?:[^/]*|(?:b|m)[^/]*/[^/]*)k(?:/|$))'>
319 <includematcher includes='(?:[^/]*|(?:b|m)[^/]*/[^/]*)k(?:/|$)'>
320 f beans/black beans/black
320 f beans/black beans/black
321 f fenugreek fenugreek
321 f fenugreek fenugreek
322 f mammals/skunk mammals/skunk
322 f mammals/skunk mammals/skunk
323 $ hg debugwalk -v -Ibeans mammals
323 $ hg debugwalk -v -Ibeans mammals
324 * matcher:
324 * matcher:
325 <intersectionmatcher
325 <intersectionmatcher
326 m1=<patternmatcher patterns='(?:mammals(?:/|$))'>,
326 m1=<patternmatcher patterns='mammals(?:/|$)'>,
327 m2=<includematcher includes='(?:beans(?:/|$))'>>
327 m2=<includematcher includes='beans(?:/|$)'>>
328 $ hg debugwalk -v -Inon-existent
328 $ hg debugwalk -v -Inon-existent
329 * matcher:
329 * matcher:
330 <includematcher includes='(?:non\\-existent(?:/|$))'>
330 <includematcher includes='non\\-existent(?:/|$)'>
331 $ hg debugwalk -v -Inon-existent -Ibeans/black
331 $ hg debugwalk -v -Inon-existent -Ibeans/black
332 * matcher:
332 * matcher:
333 <includematcher includes='(?:non\\-existent(?:/|$)|beans/black(?:/|$))'>
333 <includematcher includes='non\\-existent(?:/|$)|beans/black(?:/|$)'>
334 f beans/black beans/black
334 f beans/black beans/black
335 $ hg debugwalk -v -Ibeans beans/black
335 $ hg debugwalk -v -Ibeans beans/black
336 * matcher:
336 * matcher:
337 <intersectionmatcher
337 <intersectionmatcher
338 m1=<patternmatcher patterns='(?:beans/black(?:/|$))'>,
338 m1=<patternmatcher patterns='beans/black(?:/|$)'>,
339 m2=<includematcher includes='(?:beans(?:/|$))'>>
339 m2=<includematcher includes='beans(?:/|$)'>>
340 f beans/black beans/black exact
340 f beans/black beans/black exact
341 $ hg debugwalk -v -Ibeans/black beans
341 $ hg debugwalk -v -Ibeans/black beans
342 * matcher:
342 * matcher:
343 <intersectionmatcher
343 <intersectionmatcher
344 m1=<patternmatcher patterns='(?:beans(?:/|$))'>,
344 m1=<patternmatcher patterns='beans(?:/|$)'>,
345 m2=<includematcher includes='(?:beans/black(?:/|$))'>>
345 m2=<includematcher includes='beans/black(?:/|$)'>>
346 f beans/black beans/black
346 f beans/black beans/black
347 $ hg debugwalk -v -Xbeans/black beans
347 $ hg debugwalk -v -Xbeans/black beans
348 * matcher:
348 * matcher:
349 <differencematcher
349 <differencematcher
350 m1=<patternmatcher patterns='(?:beans(?:/|$))'>,
350 m1=<patternmatcher patterns='beans(?:/|$)'>,
351 m2=<includematcher includes='(?:beans/black(?:/|$))'>>
351 m2=<includematcher includes='beans/black(?:/|$)'>>
352 f beans/borlotti beans/borlotti
352 f beans/borlotti beans/borlotti
353 f beans/kidney beans/kidney
353 f beans/kidney beans/kidney
354 f beans/navy beans/navy
354 f beans/navy beans/navy
@@ -357,8 +357,8 b''
357 $ hg debugwalk -v -Xbeans/black -Ibeans
357 $ hg debugwalk -v -Xbeans/black -Ibeans
358 * matcher:
358 * matcher:
359 <differencematcher
359 <differencematcher
360 m1=<includematcher includes='(?:beans(?:/|$))'>,
360 m1=<includematcher includes='beans(?:/|$)'>,
361 m2=<includematcher includes='(?:beans/black(?:/|$))'>>
361 m2=<includematcher includes='beans/black(?:/|$)'>>
362 f beans/borlotti beans/borlotti
362 f beans/borlotti beans/borlotti
363 f beans/kidney beans/kidney
363 f beans/kidney beans/kidney
364 f beans/navy beans/navy
364 f beans/navy beans/navy
@@ -367,37 +367,37 b''
367 $ hg debugwalk -v -Xbeans/black beans/black
367 $ hg debugwalk -v -Xbeans/black beans/black
368 * matcher:
368 * matcher:
369 <differencematcher
369 <differencematcher
370 m1=<patternmatcher patterns='(?:beans/black(?:/|$))'>,
370 m1=<patternmatcher patterns='beans/black(?:/|$)'>,
371 m2=<includematcher includes='(?:beans/black(?:/|$))'>>
371 m2=<includematcher includes='beans/black(?:/|$)'>>
372 $ hg debugwalk -v -Xbeans/black -Ibeans/black
372 $ hg debugwalk -v -Xbeans/black -Ibeans/black
373 * matcher:
373 * matcher:
374 <differencematcher
374 <differencematcher
375 m1=<includematcher includes='(?:beans/black(?:/|$))'>,
375 m1=<includematcher includes='beans/black(?:/|$)'>,
376 m2=<includematcher includes='(?:beans/black(?:/|$))'>>
376 m2=<includematcher includes='beans/black(?:/|$)'>>
377 $ hg debugwalk -v -Xbeans beans/black
377 $ hg debugwalk -v -Xbeans beans/black
378 * matcher:
378 * matcher:
379 <differencematcher
379 <differencematcher
380 m1=<patternmatcher patterns='(?:beans/black(?:/|$))'>,
380 m1=<patternmatcher patterns='beans/black(?:/|$)'>,
381 m2=<includematcher includes='(?:beans(?:/|$))'>>
381 m2=<includematcher includes='beans(?:/|$)'>>
382 $ hg debugwalk -v -Xbeans -Ibeans/black
382 $ hg debugwalk -v -Xbeans -Ibeans/black
383 * matcher:
383 * matcher:
384 <differencematcher
384 <differencematcher
385 m1=<includematcher includes='(?:beans/black(?:/|$))'>,
385 m1=<includematcher includes='beans/black(?:/|$)'>,
386 m2=<includematcher includes='(?:beans(?:/|$))'>>
386 m2=<includematcher includes='beans(?:/|$)'>>
387 $ hg debugwalk -v 'glob:mammals/../beans/b*'
387 $ hg debugwalk -v 'glob:mammals/../beans/b*'
388 * matcher:
388 * matcher:
389 <patternmatcher patterns='(?:beans/b[^/]*$)'>
389 <patternmatcher patterns='beans/b[^/]*$'>
390 f beans/black beans/black
390 f beans/black beans/black
391 f beans/borlotti beans/borlotti
391 f beans/borlotti beans/borlotti
392 $ hg debugwalk -v '-X*/Procyonidae' mammals
392 $ hg debugwalk -v '-X*/Procyonidae' mammals
393 * matcher:
393 * matcher:
394 <differencematcher
394 <differencematcher
395 m1=<patternmatcher patterns='(?:mammals(?:/|$))'>,
395 m1=<patternmatcher patterns='mammals(?:/|$)'>,
396 m2=<includematcher includes='(?:[^/]*/Procyonidae(?:/|$))'>>
396 m2=<includematcher includes='[^/]*/Procyonidae(?:/|$)'>>
397 f mammals/skunk mammals/skunk
397 f mammals/skunk mammals/skunk
398 $ hg debugwalk -v path:mammals
398 $ hg debugwalk -v path:mammals
399 * matcher:
399 * matcher:
400 <patternmatcher patterns='(?:mammals(?:/|$))'>
400 <patternmatcher patterns='mammals(?:/|$)'>
401 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
401 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
402 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
402 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
403 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
403 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
@@ -426,29 +426,29 b' Test explicit paths and excludes:'
426 $ hg debugwalk -v fennel -X fennel
426 $ hg debugwalk -v fennel -X fennel
427 * matcher:
427 * matcher:
428 <differencematcher
428 <differencematcher
429 m1=<patternmatcher patterns='(?:fennel(?:/|$))'>,
429 m1=<patternmatcher patterns='fennel(?:/|$)'>,
430 m2=<includematcher includes='(?:fennel(?:/|$))'>>
430 m2=<includematcher includes='fennel(?:/|$)'>>
431 $ hg debugwalk -v fennel -X 'f*'
431 $ hg debugwalk -v fennel -X 'f*'
432 * matcher:
432 * matcher:
433 <differencematcher
433 <differencematcher
434 m1=<patternmatcher patterns='(?:fennel(?:/|$))'>,
434 m1=<patternmatcher patterns='fennel(?:/|$)'>,
435 m2=<includematcher includes='(?:f[^/]*(?:/|$))'>>
435 m2=<includematcher includes='f[^/]*(?:/|$)'>>
436 $ hg debugwalk -v beans/black -X 'path:beans'
436 $ hg debugwalk -v beans/black -X 'path:beans'
437 * matcher:
437 * matcher:
438 <differencematcher
438 <differencematcher
439 m1=<patternmatcher patterns='(?:beans/black(?:/|$))'>,
439 m1=<patternmatcher patterns='beans/black(?:/|$)'>,
440 m2=<includematcher includes='(?:beans(?:/|$))'>>
440 m2=<includematcher includes='beans(?:/|$)'>>
441 $ hg debugwalk -v -I 'path:beans/black' -X 'path:beans'
441 $ hg debugwalk -v -I 'path:beans/black' -X 'path:beans'
442 * matcher:
442 * matcher:
443 <differencematcher
443 <differencematcher
444 m1=<includematcher includes='(?:beans/black(?:/|$))'>,
444 m1=<includematcher includes='beans/black(?:/|$)'>,
445 m2=<includematcher includes='(?:beans(?:/|$))'>>
445 m2=<includematcher includes='beans(?:/|$)'>>
446
446
447 Test absolute paths:
447 Test absolute paths:
448
448
449 $ hg debugwalk -v `pwd`/beans
449 $ hg debugwalk -v `pwd`/beans
450 * matcher:
450 * matcher:
451 <patternmatcher patterns='(?:beans(?:/|$))'>
451 <patternmatcher patterns='beans(?:/|$)'>
452 f beans/black beans/black
452 f beans/black beans/black
453 f beans/borlotti beans/borlotti
453 f beans/borlotti beans/borlotti
454 f beans/kidney beans/kidney
454 f beans/kidney beans/kidney
@@ -463,7 +463,7 b' Test patterns:'
463
463
464 $ hg debugwalk -v glob:\*
464 $ hg debugwalk -v glob:\*
465 * matcher:
465 * matcher:
466 <patternmatcher patterns='(?:[^/]*$)'>
466 <patternmatcher patterns='[^/]*$'>
467 f fennel fennel
467 f fennel fennel
468 f fenugreek fenugreek
468 f fenugreek fenugreek
469 f fiddlehead fiddlehead
469 f fiddlehead fiddlehead
@@ -474,22 +474,22 b' Test patterns:'
474 warning: filename contains ':', which is reserved on Windows: 'glob:glob'
474 warning: filename contains ':', which is reserved on Windows: 'glob:glob'
475 $ hg debugwalk -v glob:\*
475 $ hg debugwalk -v glob:\*
476 * matcher:
476 * matcher:
477 <patternmatcher patterns='(?:[^/]*$)'>
477 <patternmatcher patterns='[^/]*$'>
478 f fennel fennel
478 f fennel fennel
479 f fenugreek fenugreek
479 f fenugreek fenugreek
480 f fiddlehead fiddlehead
480 f fiddlehead fiddlehead
481 f glob:glob glob:glob
481 f glob:glob glob:glob
482 $ hg debugwalk -v glob:glob
482 $ hg debugwalk -v glob:glob
483 * matcher:
483 * matcher:
484 <patternmatcher patterns='(?:glob$)'>
484 <patternmatcher patterns='glob$'>
485 glob: $ENOENT$
485 glob: $ENOENT$
486 $ hg debugwalk -v glob:glob:glob
486 $ hg debugwalk -v glob:glob:glob
487 * matcher:
487 * matcher:
488 <patternmatcher patterns='(?:glob:glob$)'>
488 <patternmatcher patterns='glob:glob$'>
489 f glob:glob glob:glob exact
489 f glob:glob glob:glob exact
490 $ hg debugwalk -v path:glob:glob
490 $ hg debugwalk -v path:glob:glob
491 * matcher:
491 * matcher:
492 <patternmatcher patterns='(?:glob:glob(?:/|$))'>
492 <patternmatcher patterns='glob:glob(?:/|$)'>
493 f glob:glob glob:glob exact
493 f glob:glob glob:glob exact
494 $ rm glob:glob
494 $ rm glob:glob
495 $ hg addremove
495 $ hg addremove
@@ -498,45 +498,45 b' Test patterns:'
498
498
499 $ hg debugwalk -v 'glob:**e'
499 $ hg debugwalk -v 'glob:**e'
500 * matcher:
500 * matcher:
501 <patternmatcher patterns='(?:.*e$)'>
501 <patternmatcher patterns='.*e$'>
502 f beans/turtle beans/turtle
502 f beans/turtle beans/turtle
503 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
503 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
504
504
505 $ hg debugwalk -v 're:.*[kb]$'
505 $ hg debugwalk -v 're:.*[kb]$'
506 * matcher:
506 * matcher:
507 <patternmatcher patterns='(?:.*[kb]$)'>
507 <patternmatcher patterns='.*[kb]$'>
508 f beans/black beans/black
508 f beans/black beans/black
509 f fenugreek fenugreek
509 f fenugreek fenugreek
510 f mammals/skunk mammals/skunk
510 f mammals/skunk mammals/skunk
511
511
512 $ hg debugwalk -v path:beans/black
512 $ hg debugwalk -v path:beans/black
513 * matcher:
513 * matcher:
514 <patternmatcher patterns='(?:beans/black(?:/|$))'>
514 <patternmatcher patterns='beans/black(?:/|$)'>
515 f beans/black beans/black exact
515 f beans/black beans/black exact
516 $ hg debugwalk -v path:beans//black
516 $ hg debugwalk -v path:beans//black
517 * matcher:
517 * matcher:
518 <patternmatcher patterns='(?:beans/black(?:/|$))'>
518 <patternmatcher patterns='beans/black(?:/|$)'>
519 f beans/black beans/black exact
519 f beans/black beans/black exact
520
520
521 $ hg debugwalk -v relglob:Procyonidae
521 $ hg debugwalk -v relglob:Procyonidae
522 * matcher:
522 * matcher:
523 <patternmatcher patterns='(?:(?:|.*/)Procyonidae$)'>
523 <patternmatcher patterns='(?:|.*/)Procyonidae$'>
524 $ hg debugwalk -v 'relglob:Procyonidae/**'
524 $ hg debugwalk -v 'relglob:Procyonidae/**'
525 * matcher:
525 * matcher:
526 <patternmatcher patterns='(?:(?:|.*/)Procyonidae/.*$)'>
526 <patternmatcher patterns='(?:|.*/)Procyonidae/.*$'>
527 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
527 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
528 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
528 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
529 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
529 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
530 $ hg debugwalk -v 'relglob:Procyonidae/**' fennel
530 $ hg debugwalk -v 'relglob:Procyonidae/**' fennel
531 * matcher:
531 * matcher:
532 <patternmatcher patterns='(?:(?:|.*/)Procyonidae/.*$|fennel(?:/|$))'>
532 <patternmatcher patterns='(?:|.*/)Procyonidae/.*$|fennel(?:/|$)'>
533 f fennel fennel exact
533 f fennel fennel exact
534 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
534 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
535 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
535 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
536 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
536 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
537 $ hg debugwalk -v beans 'glob:beans/*'
537 $ hg debugwalk -v beans 'glob:beans/*'
538 * matcher:
538 * matcher:
539 <patternmatcher patterns='(?:beans(?:/|$)|beans/[^/]*$)'>
539 <patternmatcher patterns='beans(?:/|$)|beans/[^/]*$'>
540 f beans/black beans/black
540 f beans/black beans/black
541 f beans/borlotti beans/borlotti
541 f beans/borlotti beans/borlotti
542 f beans/kidney beans/kidney
542 f beans/kidney beans/kidney
@@ -545,14 +545,14 b' Test patterns:'
545 f beans/turtle beans/turtle
545 f beans/turtle beans/turtle
546 $ hg debugwalk -v 'glob:mamm**'
546 $ hg debugwalk -v 'glob:mamm**'
547 * matcher:
547 * matcher:
548 <patternmatcher patterns='(?:mamm.*$)'>
548 <patternmatcher patterns='mamm.*$'>
549 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
549 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
550 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
550 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
551 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
551 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
552 f mammals/skunk mammals/skunk
552 f mammals/skunk mammals/skunk
553 $ hg debugwalk -v 'glob:mamm**' fennel
553 $ hg debugwalk -v 'glob:mamm**' fennel
554 * matcher:
554 * matcher:
555 <patternmatcher patterns='(?:mamm.*$|fennel(?:/|$))'>
555 <patternmatcher patterns='mamm.*$|fennel(?:/|$)'>
556 f fennel fennel exact
556 f fennel fennel exact
557 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
557 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
558 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
558 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
@@ -560,34 +560,34 b' Test patterns:'
560 f mammals/skunk mammals/skunk
560 f mammals/skunk mammals/skunk
561 $ hg debugwalk -v 'glob:j*'
561 $ hg debugwalk -v 'glob:j*'
562 * matcher:
562 * matcher:
563 <patternmatcher patterns='(?:j[^/]*$)'>
563 <patternmatcher patterns='j[^/]*$'>
564 $ hg debugwalk -v NOEXIST
564 $ hg debugwalk -v NOEXIST
565 * matcher:
565 * matcher:
566 <patternmatcher patterns='(?:NOEXIST(?:/|$))'>
566 <patternmatcher patterns='NOEXIST(?:/|$)'>
567 NOEXIST: * (glob)
567 NOEXIST: * (glob)
568
568
569 #if fifo
569 #if fifo
570 $ mkfifo fifo
570 $ mkfifo fifo
571 $ hg debugwalk -v fifo
571 $ hg debugwalk -v fifo
572 * matcher:
572 * matcher:
573 <patternmatcher patterns='(?:fifo(?:/|$))'>
573 <patternmatcher patterns='fifo(?:/|$)'>
574 fifo: unsupported file type (type is fifo)
574 fifo: unsupported file type (type is fifo)
575 #endif
575 #endif
576
576
577 $ rm fenugreek
577 $ rm fenugreek
578 $ hg debugwalk -v fenugreek
578 $ hg debugwalk -v fenugreek
579 * matcher:
579 * matcher:
580 <patternmatcher patterns='(?:fenugreek(?:/|$))'>
580 <patternmatcher patterns='fenugreek(?:/|$)'>
581 f fenugreek fenugreek exact
581 f fenugreek fenugreek exact
582 $ hg rm fenugreek
582 $ hg rm fenugreek
583 $ hg debugwalk -v fenugreek
583 $ hg debugwalk -v fenugreek
584 * matcher:
584 * matcher:
585 <patternmatcher patterns='(?:fenugreek(?:/|$))'>
585 <patternmatcher patterns='fenugreek(?:/|$)'>
586 f fenugreek fenugreek exact
586 f fenugreek fenugreek exact
587 $ touch new
587 $ touch new
588 $ hg debugwalk -v new
588 $ hg debugwalk -v new
589 * matcher:
589 * matcher:
590 <patternmatcher patterns='(?:new(?:/|$))'>
590 <patternmatcher patterns='new(?:/|$)'>
591 f new new exact
591 f new new exact
592
592
593 $ mkdir ignored
593 $ mkdir ignored
@@ -595,10 +595,10 b' Test patterns:'
595 $ echo '^ignored$' > .hgignore
595 $ echo '^ignored$' > .hgignore
596 $ hg debugwalk -v ignored
596 $ hg debugwalk -v ignored
597 * matcher:
597 * matcher:
598 <patternmatcher patterns='(?:ignored(?:/|$))'>
598 <patternmatcher patterns='ignored(?:/|$)'>
599 $ hg debugwalk -v ignored/file
599 $ hg debugwalk -v ignored/file
600 * matcher:
600 * matcher:
601 <patternmatcher patterns='(?:ignored/file(?:/|$))'>
601 <patternmatcher patterns='ignored/file(?:/|$)'>
602 f ignored/file ignored/file exact
602 f ignored/file ignored/file exact
603
603
604 Test listfile and listfile0
604 Test listfile and listfile0
@@ -606,13 +606,13 b' Test listfile and listfile0'
606 $ "$PYTHON" -c "open('listfile0', 'wb').write(b'fenugreek\0new\0')"
606 $ "$PYTHON" -c "open('listfile0', 'wb').write(b'fenugreek\0new\0')"
607 $ hg debugwalk -v -I 'listfile0:listfile0'
607 $ hg debugwalk -v -I 'listfile0:listfile0'
608 * matcher:
608 * matcher:
609 <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$))'>
609 <includematcher includes='fenugreek(?:/|$)|new(?:/|$)'>
610 f fenugreek fenugreek
610 f fenugreek fenugreek
611 f new new
611 f new new
612 $ "$PYTHON" -c "open('listfile', 'wb').write(b'fenugreek\nnew\r\nmammals/skunk\n')"
612 $ "$PYTHON" -c "open('listfile', 'wb').write(b'fenugreek\nnew\r\nmammals/skunk\n')"
613 $ hg debugwalk -v -I 'listfile:listfile'
613 $ hg debugwalk -v -I 'listfile:listfile'
614 * matcher:
614 * matcher:
615 <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$)|mammals/skunk(?:/|$))'>
615 <includematcher includes='fenugreek(?:/|$)|new(?:/|$)|mammals/skunk(?:/|$)'>
616 f fenugreek fenugreek
616 f fenugreek fenugreek
617 f mammals/skunk mammals/skunk
617 f mammals/skunk mammals/skunk
618 f new new
618 f new new
@@ -620,17 +620,17 b' Test listfile and listfile0'
620 $ cd ..
620 $ cd ..
621 $ hg debugwalk -v -R t t/mammals/skunk
621 $ hg debugwalk -v -R t t/mammals/skunk
622 * matcher:
622 * matcher:
623 <patternmatcher patterns='(?:mammals/skunk(?:/|$))'>
623 <patternmatcher patterns='mammals/skunk(?:/|$)'>
624 f mammals/skunk t/mammals/skunk exact
624 f mammals/skunk t/mammals/skunk exact
625 $ mkdir t2
625 $ mkdir t2
626 $ cd t2
626 $ cd t2
627 $ hg debugwalk -v -R ../t ../t/mammals/skunk
627 $ hg debugwalk -v -R ../t ../t/mammals/skunk
628 * matcher:
628 * matcher:
629 <patternmatcher patterns='(?:mammals/skunk(?:/|$))'>
629 <patternmatcher patterns='mammals/skunk(?:/|$)'>
630 f mammals/skunk ../t/mammals/skunk exact
630 f mammals/skunk ../t/mammals/skunk exact
631 $ hg debugwalk -v --cwd ../t mammals/skunk
631 $ hg debugwalk -v --cwd ../t mammals/skunk
632 * matcher:
632 * matcher:
633 <patternmatcher patterns='(?:mammals/skunk(?:/|$))'>
633 <patternmatcher patterns='mammals/skunk(?:/|$)'>
634 f mammals/skunk mammals/skunk exact
634 f mammals/skunk mammals/skunk exact
635
635
636 $ cd ..
636 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now