##// END OF EJS Templates
debugwalk: pretty-print nested matcher...
Yuya Nishihara -
r38282:dbf31732 default
parent child Browse files
Show More
@@ -2543,7 +2543,7 b' def debugwalk(ui, repo, *pats, **opts):'
2543 opts = pycompat.byteskwargs(opts)
2543 opts = pycompat.byteskwargs(opts)
2544 m = scmutil.match(repo[None], pats, opts)
2544 m = scmutil.match(repo[None], pats, opts)
2545 if ui.verbose:
2545 if ui.verbose:
2546 ui.write(('matcher: %r\n' % m))
2546 ui.write(('* matcher:\n'), stringutil.prettyrepr(m), '\n')
2547 items = list(repo[None].walk(m))
2547 items = list(repo[None].walk(m))
2548 if not items:
2548 if not items:
2549 return
2549 return
@@ -33,7 +33,8 b' test issue352'
33 [255]
33 [255]
34 $ echo foo > "$A"
34 $ echo foo > "$A"
35 $ hg debugwalk -v
35 $ hg debugwalk -v
36 matcher: <alwaysmatcher>
36 * matcher:
37 <alwaysmatcher>
37 f he\r (no-eol) (esc)
38 f he\r (no-eol) (esc)
38 llo he\r (no-eol) (esc)
39 llo he\r (no-eol) (esc)
39 llo
40 llo
@@ -50,7 +50,8 b' Can not modify dirstate outside'
50 $ mkdir outside
50 $ mkdir 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: <includematcher includes='(?:(?:|.*/)f1(?:/|$))'>
53 * matcher:
54 <includematcher includes='(?:(?:|.*/)f1(?:/|$))'>
54 f inside/f1 inside/f1
55 f inside/f1 inside/f1
55 $ hg add outside/f1
56 $ hg add outside/f1
56 abort: cannot track 'outside/f1' - it is outside the narrow clone
57 abort: cannot track 'outside/f1' - it is outside the narrow clone
@@ -29,7 +29,8 b''
29 $ hg commit -m "commit #0"
29 $ hg commit -m "commit #0"
30
30
31 $ hg debugwalk -v
31 $ hg debugwalk -v
32 matcher: <alwaysmatcher>
32 * matcher:
33 <alwaysmatcher>
33 f beans/black beans/black
34 f beans/black beans/black
34 f beans/borlotti beans/borlotti
35 f beans/borlotti beans/borlotti
35 f beans/kidney beans/kidney
36 f beans/kidney beans/kidney
@@ -44,7 +45,8 b''
44 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
45 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
45 f mammals/skunk mammals/skunk
46 f mammals/skunk mammals/skunk
46 $ hg debugwalk -v -I.
47 $ hg debugwalk -v -I.
47 matcher: <includematcher includes='(?:)'>
48 * matcher:
49 <includematcher includes='(?:)'>
48 f beans/black beans/black
50 f beans/black beans/black
49 f beans/borlotti beans/borlotti
51 f beans/borlotti beans/borlotti
50 f beans/kidney beans/kidney
52 f beans/kidney beans/kidney
@@ -61,7 +63,8 b''
61
63
62 $ cd mammals
64 $ cd mammals
63 $ hg debugwalk -v
65 $ hg debugwalk -v
64 matcher: <alwaysmatcher>
66 * matcher:
67 <alwaysmatcher>
65 f beans/black ../beans/black
68 f beans/black ../beans/black
66 f beans/borlotti ../beans/borlotti
69 f beans/borlotti ../beans/borlotti
67 f beans/kidney ../beans/kidney
70 f beans/kidney ../beans/kidney
@@ -76,7 +79,10 b''
76 f mammals/Procyonidae/raccoon Procyonidae/raccoon
79 f mammals/Procyonidae/raccoon Procyonidae/raccoon
77 f mammals/skunk skunk
80 f mammals/skunk skunk
78 $ hg debugwalk -v -X ../beans
81 $ hg debugwalk -v -X ../beans
79 matcher: <differencematcher m1=<alwaysmatcher>, m2=<includematcher includes='(?:beans(?:/|$))'>>
82 * matcher:
83 <differencematcher m1=
84 <alwaysmatcher>, m2=
85 <includematcher includes='(?:beans(?:/|$))'>>
80 f fennel ../fennel
86 f fennel ../fennel
81 f fenugreek ../fenugreek
87 f fenugreek ../fenugreek
82 f fiddlehead ../fiddlehead
88 f fiddlehead ../fiddlehead
@@ -85,31 +91,40 b''
85 f mammals/Procyonidae/raccoon Procyonidae/raccoon
91 f mammals/Procyonidae/raccoon Procyonidae/raccoon
86 f mammals/skunk skunk
92 f mammals/skunk skunk
87 $ hg debugwalk -v -I '*k'
93 $ hg debugwalk -v -I '*k'
88 matcher: <includematcher includes='(?:mammals\\/[^/]*k(?:/|$))'>
94 * matcher:
95 <includematcher includes='(?:mammals\\/[^/]*k(?:/|$))'>
89 f mammals/skunk skunk
96 f mammals/skunk skunk
90 $ hg debugwalk -v -I 'glob:*k'
97 $ hg debugwalk -v -I 'glob:*k'
91 matcher: <includematcher includes='(?:mammals\\/[^/]*k(?:/|$))'>
98 * matcher:
99 <includematcher includes='(?:mammals\\/[^/]*k(?:/|$))'>
92 f mammals/skunk skunk
100 f mammals/skunk skunk
93 $ hg debugwalk -v -I 'relglob:*k'
101 $ hg debugwalk -v -I 'relglob:*k'
94 matcher: <includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>
102 * matcher:
103 <includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>
95 f beans/black ../beans/black
104 f beans/black ../beans/black
96 f fenugreek ../fenugreek
105 f fenugreek ../fenugreek
97 f mammals/skunk skunk
106 f mammals/skunk skunk
98 $ hg debugwalk -v -I 'relglob:*k' .
107 $ hg debugwalk -v -I 'relglob:*k' .
99 matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:mammals(?:/|$))'>, m2=<includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>>
108 * matcher:
109 <intersectionmatcher m1=
110 <patternmatcher patterns='(?:mammals(?:/|$))'>, m2=
111 <includematcher includes='(?:(?:|.*/)[^/]*k(?:/|$))'>>
100 f mammals/skunk skunk
112 f mammals/skunk skunk
101 $ hg debugwalk -v -I 're:.*k$'
113 $ hg debugwalk -v -I 're:.*k$'
102 matcher: <includematcher includes='(?:.*k$)'>
114 * matcher:
115 <includematcher includes='(?:.*k$)'>
103 f beans/black ../beans/black
116 f beans/black ../beans/black
104 f fenugreek ../fenugreek
117 f fenugreek ../fenugreek
105 f mammals/skunk skunk
118 f mammals/skunk skunk
106 $ hg debugwalk -v -I 'relre:.*k$'
119 $ hg debugwalk -v -I 'relre:.*k$'
107 matcher: <includematcher includes='(?:.*.*k$)'>
120 * matcher:
121 <includematcher includes='(?:.*.*k$)'>
108 f beans/black ../beans/black
122 f beans/black ../beans/black
109 f fenugreek ../fenugreek
123 f fenugreek ../fenugreek
110 f mammals/skunk skunk
124 f mammals/skunk skunk
111 $ hg debugwalk -v -I 'path:beans'
125 $ hg debugwalk -v -I 'path:beans'
112 matcher: <includematcher includes='(?:beans(?:/|$))'>
126 * matcher:
127 <includematcher includes='(?:beans(?:/|$))'>
113 f beans/black ../beans/black
128 f beans/black ../beans/black
114 f beans/borlotti ../beans/borlotti
129 f beans/borlotti ../beans/borlotti
115 f beans/kidney ../beans/kidney
130 f beans/kidney ../beans/kidney
@@ -117,7 +132,8 b''
117 f beans/pinto ../beans/pinto
132 f beans/pinto ../beans/pinto
118 f beans/turtle ../beans/turtle
133 f beans/turtle ../beans/turtle
119 $ hg debugwalk -v -I 'relpath:detour/../../beans'
134 $ hg debugwalk -v -I 'relpath:detour/../../beans'
120 matcher: <includematcher includes='(?:beans(?:/|$))'>
135 * matcher:
136 <includematcher includes='(?:beans(?:/|$))'>
121 f beans/black ../beans/black
137 f beans/black ../beans/black
122 f beans/borlotti ../beans/borlotti
138 f beans/borlotti ../beans/borlotti
123 f beans/kidney ../beans/kidney
139 f beans/kidney ../beans/kidney
@@ -126,27 +142,34 b''
126 f beans/turtle ../beans/turtle
142 f beans/turtle ../beans/turtle
127
143
128 $ hg debugwalk -v 'rootfilesin:'
144 $ hg debugwalk -v 'rootfilesin:'
129 matcher: <patternmatcher patterns='(?:[^/]+$)'>
145 * matcher:
146 <patternmatcher patterns='(?:[^/]+$)'>
130 f fennel ../fennel
147 f fennel ../fennel
131 f fenugreek ../fenugreek
148 f fenugreek ../fenugreek
132 f fiddlehead ../fiddlehead
149 f fiddlehead ../fiddlehead
133 $ hg debugwalk -v -I 'rootfilesin:'
150 $ hg debugwalk -v -I 'rootfilesin:'
134 matcher: <includematcher includes='(?:[^/]+$)'>
151 * matcher:
152 <includematcher includes='(?:[^/]+$)'>
135 f fennel ../fennel
153 f fennel ../fennel
136 f fenugreek ../fenugreek
154 f fenugreek ../fenugreek
137 f fiddlehead ../fiddlehead
155 f fiddlehead ../fiddlehead
138 $ hg debugwalk -v 'rootfilesin:.'
156 $ hg debugwalk -v 'rootfilesin:.'
139 matcher: <patternmatcher patterns='(?:[^/]+$)'>
157 * matcher:
158 <patternmatcher patterns='(?:[^/]+$)'>
140 f fennel ../fennel
159 f fennel ../fennel
141 f fenugreek ../fenugreek
160 f fenugreek ../fenugreek
142 f fiddlehead ../fiddlehead
161 f fiddlehead ../fiddlehead
143 $ hg debugwalk -v -I 'rootfilesin:.'
162 $ hg debugwalk -v -I 'rootfilesin:.'
144 matcher: <includematcher includes='(?:[^/]+$)'>
163 * matcher:
164 <includematcher includes='(?:[^/]+$)'>
145 f fennel ../fennel
165 f fennel ../fennel
146 f fenugreek ../fenugreek
166 f fenugreek ../fenugreek
147 f fiddlehead ../fiddlehead
167 f fiddlehead ../fiddlehead
148 $ hg debugwalk -v -X 'rootfilesin:'
168 $ hg debugwalk -v -X 'rootfilesin:'
149 matcher: <differencematcher m1=<alwaysmatcher>, m2=<includematcher includes='(?:[^/]+$)'>>
169 * matcher:
170 <differencematcher m1=
171 <alwaysmatcher>, m2=
172 <includematcher includes='(?:[^/]+$)'>>
150 f beans/black ../beans/black
173 f beans/black ../beans/black
151 f beans/borlotti ../beans/borlotti
174 f beans/borlotti ../beans/borlotti
152 f beans/kidney ../beans/kidney
175 f beans/kidney ../beans/kidney
@@ -158,15 +181,20 b''
158 f mammals/Procyonidae/raccoon Procyonidae/raccoon
181 f mammals/Procyonidae/raccoon Procyonidae/raccoon
159 f mammals/skunk skunk
182 f mammals/skunk skunk
160 $ hg debugwalk -v 'rootfilesin:fennel'
183 $ hg debugwalk -v 'rootfilesin:fennel'
161 matcher: <patternmatcher patterns='(?:fennel/[^/]+$)'>
184 * matcher:
185 <patternmatcher patterns='(?:fennel/[^/]+$)'>
162 $ hg debugwalk -v -I 'rootfilesin:fennel'
186 $ hg debugwalk -v -I 'rootfilesin:fennel'
163 matcher: <includematcher includes='(?:fennel/[^/]+$)'>
187 * matcher:
188 <includematcher includes='(?:fennel/[^/]+$)'>
164 $ hg debugwalk -v 'rootfilesin:skunk'
189 $ hg debugwalk -v 'rootfilesin:skunk'
165 matcher: <patternmatcher patterns='(?:skunk/[^/]+$)'>
190 * matcher:
191 <patternmatcher patterns='(?:skunk/[^/]+$)'>
166 $ hg debugwalk -v -I 'rootfilesin:skunk'
192 $ hg debugwalk -v -I 'rootfilesin:skunk'
167 matcher: <includematcher includes='(?:skunk/[^/]+$)'>
193 * matcher:
194 <includematcher includes='(?:skunk/[^/]+$)'>
168 $ hg debugwalk -v 'rootfilesin:beans'
195 $ hg debugwalk -v 'rootfilesin:beans'
169 matcher: <patternmatcher patterns='(?:beans/[^/]+$)'>
196 * matcher:
197 <patternmatcher patterns='(?:beans/[^/]+$)'>
170 f beans/black ../beans/black
198 f beans/black ../beans/black
171 f beans/borlotti ../beans/borlotti
199 f beans/borlotti ../beans/borlotti
172 f beans/kidney ../beans/kidney
200 f beans/kidney ../beans/kidney
@@ -174,7 +202,8 b''
174 f beans/pinto ../beans/pinto
202 f beans/pinto ../beans/pinto
175 f beans/turtle ../beans/turtle
203 f beans/turtle ../beans/turtle
176 $ hg debugwalk -v -I 'rootfilesin:beans'
204 $ hg debugwalk -v -I 'rootfilesin:beans'
177 matcher: <includematcher includes='(?:beans/[^/]+$)'>
205 * matcher:
206 <includematcher includes='(?:beans/[^/]+$)'>
178 f beans/black ../beans/black
207 f beans/black ../beans/black
179 f beans/borlotti ../beans/borlotti
208 f beans/borlotti ../beans/borlotti
180 f beans/kidney ../beans/kidney
209 f beans/kidney ../beans/kidney
@@ -182,19 +211,26 b''
182 f beans/pinto ../beans/pinto
211 f beans/pinto ../beans/pinto
183 f beans/turtle ../beans/turtle
212 f beans/turtle ../beans/turtle
184 $ hg debugwalk -v 'rootfilesin:mammals'
213 $ hg debugwalk -v 'rootfilesin:mammals'
185 matcher: <patternmatcher patterns='(?:mammals/[^/]+$)'>
214 * matcher:
215 <patternmatcher patterns='(?:mammals/[^/]+$)'>
186 f mammals/skunk skunk
216 f mammals/skunk skunk
187 $ hg debugwalk -v -I 'rootfilesin:mammals'
217 $ hg debugwalk -v -I 'rootfilesin:mammals'
188 matcher: <includematcher includes='(?:mammals/[^/]+$)'>
218 * matcher:
219 <includematcher includes='(?:mammals/[^/]+$)'>
189 f mammals/skunk skunk
220 f mammals/skunk skunk
190 $ hg debugwalk -v 'rootfilesin:mammals/'
221 $ hg debugwalk -v 'rootfilesin:mammals/'
191 matcher: <patternmatcher patterns='(?:mammals/[^/]+$)'>
222 * matcher:
223 <patternmatcher patterns='(?:mammals/[^/]+$)'>
192 f mammals/skunk skunk
224 f mammals/skunk skunk
193 $ hg debugwalk -v -I 'rootfilesin:mammals/'
225 $ hg debugwalk -v -I 'rootfilesin:mammals/'
194 matcher: <includematcher includes='(?:mammals/[^/]+$)'>
226 * matcher:
227 <includematcher includes='(?:mammals/[^/]+$)'>
195 f mammals/skunk skunk
228 f mammals/skunk skunk
196 $ hg debugwalk -v -X 'rootfilesin:mammals'
229 $ hg debugwalk -v -X 'rootfilesin:mammals'
197 matcher: <differencematcher m1=<alwaysmatcher>, m2=<includematcher includes='(?:mammals/[^/]+$)'>>
230 * matcher:
231 <differencematcher m1=
232 <alwaysmatcher>, m2=
233 <includematcher includes='(?:mammals/[^/]+$)'>>
198 f beans/black ../beans/black
234 f beans/black ../beans/black
199 f beans/borlotti ../beans/borlotti
235 f beans/borlotti ../beans/borlotti
200 f beans/kidney ../beans/kidney
236 f beans/kidney ../beans/kidney
@@ -209,31 +245,36 b''
209 f mammals/Procyonidae/raccoon Procyonidae/raccoon
245 f mammals/Procyonidae/raccoon Procyonidae/raccoon
210
246
211 $ hg debugwalk -v .
247 $ hg debugwalk -v .
212 matcher: <patternmatcher patterns='(?:mammals(?:/|$))'>
248 * matcher:
249 <patternmatcher patterns='(?:mammals(?:/|$))'>
213 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
250 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
214 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
251 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
215 f mammals/Procyonidae/raccoon Procyonidae/raccoon
252 f mammals/Procyonidae/raccoon Procyonidae/raccoon
216 f mammals/skunk skunk
253 f mammals/skunk skunk
217 $ hg debugwalk -v -I.
254 $ hg debugwalk -v -I.
218 matcher: <includematcher includes='(?:mammals(?:/|$))'>
255 * matcher:
256 <includematcher includes='(?:mammals(?:/|$))'>
219 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
257 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
220 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
258 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
221 f mammals/Procyonidae/raccoon Procyonidae/raccoon
259 f mammals/Procyonidae/raccoon Procyonidae/raccoon
222 f mammals/skunk skunk
260 f mammals/skunk skunk
223 $ hg debugwalk -v Procyonidae
261 $ hg debugwalk -v Procyonidae
224 matcher: <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))'>
262 * matcher:
263 <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))'>
225 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
264 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
226 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
265 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
227 f mammals/Procyonidae/raccoon Procyonidae/raccoon
266 f mammals/Procyonidae/raccoon Procyonidae/raccoon
228
267
229 $ cd Procyonidae
268 $ cd Procyonidae
230 $ hg debugwalk -v .
269 $ hg debugwalk -v .
231 matcher: <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))'>
270 * matcher:
271 <patternmatcher patterns='(?:mammals\\/Procyonidae(?:/|$))'>
232 f mammals/Procyonidae/cacomistle cacomistle
272 f mammals/Procyonidae/cacomistle cacomistle
233 f mammals/Procyonidae/coatimundi coatimundi
273 f mammals/Procyonidae/coatimundi coatimundi
234 f mammals/Procyonidae/raccoon raccoon
274 f mammals/Procyonidae/raccoon raccoon
235 $ hg debugwalk -v ..
275 $ hg debugwalk -v ..
236 matcher: <patternmatcher patterns='(?:mammals(?:/|$))'>
276 * matcher:
277 <patternmatcher patterns='(?:mammals(?:/|$))'>
237 f mammals/Procyonidae/cacomistle cacomistle
278 f mammals/Procyonidae/cacomistle cacomistle
238 f mammals/Procyonidae/coatimundi coatimundi
279 f mammals/Procyonidae/coatimundi coatimundi
239 f mammals/Procyonidae/raccoon raccoon
280 f mammals/Procyonidae/raccoon raccoon
@@ -241,7 +282,8 b''
241 $ cd ..
282 $ cd ..
242
283
243 $ hg debugwalk -v ../beans
284 $ hg debugwalk -v ../beans
244 matcher: <patternmatcher patterns='(?:beans(?:/|$))'>
285 * matcher:
286 <patternmatcher patterns='(?:beans(?:/|$))'>
245 f beans/black ../beans/black
287 f beans/black ../beans/black
246 f beans/borlotti ../beans/borlotti
288 f beans/borlotti ../beans/borlotti
247 f beans/kidney ../beans/kidney
289 f beans/kidney ../beans/kidney
@@ -249,7 +291,8 b''
249 f beans/pinto ../beans/pinto
291 f beans/pinto ../beans/pinto
250 f beans/turtle ../beans/turtle
292 f beans/turtle ../beans/turtle
251 $ hg debugwalk -v .
293 $ hg debugwalk -v .
252 matcher: <patternmatcher patterns='(?:mammals(?:/|$))'>
294 * matcher:
295 <patternmatcher patterns='(?:mammals(?:/|$))'>
253 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
296 f mammals/Procyonidae/cacomistle Procyonidae/cacomistle
254 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
297 f mammals/Procyonidae/coatimundi Procyonidae/coatimundi
255 f mammals/Procyonidae/raccoon Procyonidae/raccoon
298 f mammals/Procyonidae/raccoon Procyonidae/raccoon
@@ -263,7 +306,8 b''
263 $ cd ..
306 $ cd ..
264
307
265 $ hg debugwalk -v -Ibeans
308 $ hg debugwalk -v -Ibeans
266 matcher: <includematcher includes='(?:beans(?:/|$))'>
309 * matcher:
310 <includematcher includes='(?:beans(?:/|$))'>
267 f beans/black beans/black
311 f beans/black beans/black
268 f beans/borlotti beans/borlotti
312 f beans/borlotti beans/borlotti
269 f beans/kidney beans/kidney
313 f beans/kidney beans/kidney
@@ -271,54 +315,89 b''
271 f beans/pinto beans/pinto
315 f beans/pinto beans/pinto
272 f beans/turtle beans/turtle
316 f beans/turtle beans/turtle
273 $ hg debugwalk -v -I '{*,{b,m}*/*}k'
317 $ hg debugwalk -v -I '{*,{b,m}*/*}k'
274 matcher: <includematcher includes='(?:(?:[^/]*|(?:b|m)[^/]*\\/[^/]*)k(?:/|$))'>
318 * matcher:
319 <includematcher includes='(?:(?:[^/]*|(?:b|m)[^/]*\\/[^/]*)k(?:/|$))'>
275 f beans/black beans/black
320 f beans/black beans/black
276 f fenugreek fenugreek
321 f fenugreek fenugreek
277 f mammals/skunk mammals/skunk
322 f mammals/skunk mammals/skunk
278 $ hg debugwalk -v -Ibeans mammals
323 $ hg debugwalk -v -Ibeans mammals
279 matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:mammals(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>>
324 * matcher:
325 <intersectionmatcher m1=
326 <patternmatcher patterns='(?:mammals(?:/|$))'>, m2=
327 <includematcher includes='(?:beans(?:/|$))'>>
280 $ hg debugwalk -v -Inon-existent
328 $ hg debugwalk -v -Inon-existent
281 matcher: <includematcher includes='(?:non\\-existent(?:/|$))'>
329 * matcher:
330 <includematcher includes='(?:non\\-existent(?:/|$))'>
282 $ hg debugwalk -v -Inon-existent -Ibeans/black
331 $ hg debugwalk -v -Inon-existent -Ibeans/black
283 matcher: <includematcher includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'>
332 * matcher:
333 <includematcher includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'>
284 f beans/black beans/black
334 f beans/black beans/black
285 $ hg debugwalk -v -Ibeans beans/black
335 $ hg debugwalk -v -Ibeans beans/black
286 matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>>
336 * matcher:
337 <intersectionmatcher m1=
338 <patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=
339 <includematcher includes='(?:beans(?:/|$))'>>
287 f beans/black beans/black exact
340 f beans/black beans/black exact
288 $ hg debugwalk -v -Ibeans/black beans
341 $ hg debugwalk -v -Ibeans/black beans
289 matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:beans(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>>
342 * matcher:
343 <intersectionmatcher m1=
344 <patternmatcher patterns='(?:beans(?:/|$))'>, m2=
345 <includematcher includes='(?:beans\\/black(?:/|$))'>>
290 f beans/black beans/black
346 f beans/black beans/black
291 $ hg debugwalk -v -Xbeans/black beans
347 $ hg debugwalk -v -Xbeans/black beans
292 matcher: <differencematcher m1=<patternmatcher patterns='(?:beans(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>>
348 * matcher:
349 <differencematcher m1=
350 <patternmatcher patterns='(?:beans(?:/|$))'>, m2=
351 <includematcher includes='(?:beans\\/black(?:/|$))'>>
293 f beans/borlotti beans/borlotti
352 f beans/borlotti beans/borlotti
294 f beans/kidney beans/kidney
353 f beans/kidney beans/kidney
295 f beans/navy beans/navy
354 f beans/navy beans/navy
296 f beans/pinto beans/pinto
355 f beans/pinto beans/pinto
297 f beans/turtle beans/turtle
356 f beans/turtle beans/turtle
298 $ hg debugwalk -v -Xbeans/black -Ibeans
357 $ hg debugwalk -v -Xbeans/black -Ibeans
299 matcher: <differencematcher m1=<includematcher includes='(?:beans(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>>
358 * matcher:
359 <differencematcher m1=
360 <includematcher includes='(?:beans(?:/|$))'>, m2=
361 <includematcher includes='(?:beans\\/black(?:/|$))'>>
300 f beans/borlotti beans/borlotti
362 f beans/borlotti beans/borlotti
301 f beans/kidney beans/kidney
363 f beans/kidney beans/kidney
302 f beans/navy beans/navy
364 f beans/navy beans/navy
303 f beans/pinto beans/pinto
365 f beans/pinto beans/pinto
304 f beans/turtle beans/turtle
366 f beans/turtle beans/turtle
305 $ hg debugwalk -v -Xbeans/black beans/black
367 $ hg debugwalk -v -Xbeans/black beans/black
306 matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>>
368 * matcher:
369 <differencematcher m1=
370 <patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=
371 <includematcher includes='(?:beans\\/black(?:/|$))'>>
307 $ hg debugwalk -v -Xbeans/black -Ibeans/black
372 $ hg debugwalk -v -Xbeans/black -Ibeans/black
308 matcher: <differencematcher m1=<includematcher includes='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans\\/black(?:/|$))'>>
373 * matcher:
374 <differencematcher m1=
375 <includematcher includes='(?:beans\\/black(?:/|$))'>, m2=
376 <includematcher includes='(?:beans\\/black(?:/|$))'>>
309 $ hg debugwalk -v -Xbeans beans/black
377 $ hg debugwalk -v -Xbeans beans/black
310 matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>>
378 * matcher:
379 <differencematcher m1=
380 <patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=
381 <includematcher includes='(?:beans(?:/|$))'>>
311 $ hg debugwalk -v -Xbeans -Ibeans/black
382 $ hg debugwalk -v -Xbeans -Ibeans/black
312 matcher: <differencematcher m1=<includematcher includes='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>>
383 * matcher:
384 <differencematcher m1=
385 <includematcher includes='(?:beans\\/black(?:/|$))'>, m2=
386 <includematcher includes='(?:beans(?:/|$))'>>
313 $ hg debugwalk -v 'glob:mammals/../beans/b*'
387 $ hg debugwalk -v 'glob:mammals/../beans/b*'
314 matcher: <patternmatcher patterns='(?:beans\\/b[^/]*$)'>
388 * matcher:
389 <patternmatcher patterns='(?:beans\\/b[^/]*$)'>
315 f beans/black beans/black
390 f beans/black beans/black
316 f beans/borlotti beans/borlotti
391 f beans/borlotti beans/borlotti
317 $ hg debugwalk -v '-X*/Procyonidae' mammals
392 $ hg debugwalk -v '-X*/Procyonidae' mammals
318 matcher: <differencematcher m1=<patternmatcher patterns='(?:mammals(?:/|$))'>, m2=<includematcher includes='(?:[^/]*\\/Procyonidae(?:/|$))'>>
393 * matcher:
394 <differencematcher m1=
395 <patternmatcher patterns='(?:mammals(?:/|$))'>, m2=
396 <includematcher includes='(?:[^/]*\\/Procyonidae(?:/|$))'>>
319 f mammals/skunk mammals/skunk
397 f mammals/skunk mammals/skunk
320 $ hg debugwalk -v path:mammals
398 $ hg debugwalk -v path:mammals
321 matcher: <patternmatcher patterns='(?:mammals(?:/|$))'>
399 * matcher:
400 <patternmatcher patterns='(?:mammals(?:/|$))'>
322 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
401 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
323 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
402 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
324 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
403 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
@@ -345,18 +424,31 b''
345 Test explicit paths and excludes:
424 Test explicit paths and excludes:
346
425
347 $ hg debugwalk -v fennel -X fennel
426 $ hg debugwalk -v fennel -X fennel
348 matcher: <differencematcher m1=<patternmatcher patterns='(?:fennel(?:/|$))'>, m2=<includematcher includes='(?:fennel(?:/|$))'>>
427 * matcher:
428 <differencematcher m1=
429 <patternmatcher patterns='(?:fennel(?:/|$))'>, m2=
430 <includematcher includes='(?:fennel(?:/|$))'>>
349 $ hg debugwalk -v fennel -X 'f*'
431 $ hg debugwalk -v fennel -X 'f*'
350 matcher: <differencematcher m1=<patternmatcher patterns='(?:fennel(?:/|$))'>, m2=<includematcher includes='(?:f[^/]*(?:/|$))'>>
432 * matcher:
433 <differencematcher m1=
434 <patternmatcher patterns='(?:fennel(?:/|$))'>, m2=
435 <includematcher includes='(?:f[^/]*(?:/|$))'>>
351 $ hg debugwalk -v beans/black -X 'path:beans'
436 $ hg debugwalk -v beans/black -X 'path:beans'
352 matcher: <differencematcher m1=<patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>>
437 * matcher:
438 <differencematcher m1=
439 <patternmatcher patterns='(?:beans\\/black(?:/|$))'>, m2=
440 <includematcher includes='(?:beans(?:/|$))'>>
353 $ hg debugwalk -v -I 'path:beans/black' -X 'path:beans'
441 $ hg debugwalk -v -I 'path:beans/black' -X 'path:beans'
354 matcher: <differencematcher m1=<includematcher includes='(?:beans\\/black(?:/|$))'>, m2=<includematcher includes='(?:beans(?:/|$))'>>
442 * matcher:
443 <differencematcher m1=
444 <includematcher includes='(?:beans\\/black(?:/|$))'>, m2=
445 <includematcher includes='(?:beans(?:/|$))'>>
355
446
356 Test absolute paths:
447 Test absolute paths:
357
448
358 $ hg debugwalk -v `pwd`/beans
449 $ hg debugwalk -v `pwd`/beans
359 matcher: <patternmatcher patterns='(?:beans(?:/|$))'>
450 * matcher:
451 <patternmatcher patterns='(?:beans(?:/|$))'>
360 f beans/black beans/black
452 f beans/black beans/black
361 f beans/borlotti beans/borlotti
453 f beans/borlotti beans/borlotti
362 f beans/kidney beans/kidney
454 f beans/kidney beans/kidney
@@ -370,7 +462,8 b' Test absolute paths:'
370 Test patterns:
462 Test patterns:
371
463
372 $ hg debugwalk -v glob:\*
464 $ hg debugwalk -v glob:\*
373 matcher: <patternmatcher patterns='(?:[^/]*$)'>
465 * matcher:
466 <patternmatcher patterns='(?:[^/]*$)'>
374 f fennel fennel
467 f fennel fennel
375 f fenugreek fenugreek
468 f fenugreek fenugreek
376 f fiddlehead fiddlehead
469 f fiddlehead fiddlehead
@@ -380,19 +473,23 b' Test patterns:'
380 adding glob:glob
473 adding glob:glob
381 warning: filename contains ':', which is reserved on Windows: 'glob:glob'
474 warning: filename contains ':', which is reserved on Windows: 'glob:glob'
382 $ hg debugwalk -v glob:\*
475 $ hg debugwalk -v glob:\*
383 matcher: <patternmatcher patterns='(?:[^/]*$)'>
476 * matcher:
477 <patternmatcher patterns='(?:[^/]*$)'>
384 f fennel fennel
478 f fennel fennel
385 f fenugreek fenugreek
479 f fenugreek fenugreek
386 f fiddlehead fiddlehead
480 f fiddlehead fiddlehead
387 f glob:glob glob:glob
481 f glob:glob glob:glob
388 $ hg debugwalk -v glob:glob
482 $ hg debugwalk -v glob:glob
389 matcher: <patternmatcher patterns='(?:glob$)'>
483 * matcher:
484 <patternmatcher patterns='(?:glob$)'>
390 glob: $ENOENT$
485 glob: $ENOENT$
391 $ hg debugwalk -v glob:glob:glob
486 $ hg debugwalk -v glob:glob:glob
392 matcher: <patternmatcher patterns='(?:glob\\:glob$)'>
487 * matcher:
488 <patternmatcher patterns='(?:glob\\:glob$)'>
393 f glob:glob glob:glob exact
489 f glob:glob glob:glob exact
394 $ hg debugwalk -v path:glob:glob
490 $ hg debugwalk -v path:glob:glob
395 matcher: <patternmatcher patterns='(?:glob\\:glob(?:/|$))'>
491 * matcher:
492 <patternmatcher patterns='(?:glob\\:glob(?:/|$))'>
396 f glob:glob glob:glob exact
493 f glob:glob glob:glob exact
397 $ rm glob:glob
494 $ rm glob:glob
398 $ hg addremove
495 $ hg addremove
@@ -400,38 +497,46 b' Test patterns:'
400 #endif
497 #endif
401
498
402 $ hg debugwalk -v 'glob:**e'
499 $ hg debugwalk -v 'glob:**e'
403 matcher: <patternmatcher patterns='(?:.*e$)'>
500 * matcher:
501 <patternmatcher patterns='(?:.*e$)'>
404 f beans/turtle beans/turtle
502 f beans/turtle beans/turtle
405 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
503 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
406
504
407 $ hg debugwalk -v 're:.*[kb]$'
505 $ hg debugwalk -v 're:.*[kb]$'
408 matcher: <patternmatcher patterns='(?:.*[kb]$)'>
506 * matcher:
507 <patternmatcher patterns='(?:.*[kb]$)'>
409 f beans/black beans/black
508 f beans/black beans/black
410 f fenugreek fenugreek
509 f fenugreek fenugreek
411 f mammals/skunk mammals/skunk
510 f mammals/skunk mammals/skunk
412
511
413 $ hg debugwalk -v path:beans/black
512 $ hg debugwalk -v path:beans/black
414 matcher: <patternmatcher patterns='(?:beans\\/black(?:/|$))'>
513 * matcher:
514 <patternmatcher patterns='(?:beans\\/black(?:/|$))'>
415 f beans/black beans/black exact
515 f beans/black beans/black exact
416 $ hg debugwalk -v path:beans//black
516 $ hg debugwalk -v path:beans//black
417 matcher: <patternmatcher patterns='(?:beans\\/black(?:/|$))'>
517 * matcher:
518 <patternmatcher patterns='(?:beans\\/black(?:/|$))'>
418 f beans/black beans/black exact
519 f beans/black beans/black exact
419
520
420 $ hg debugwalk -v relglob:Procyonidae
521 $ hg debugwalk -v relglob:Procyonidae
421 matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae$)'>
522 * matcher:
523 <patternmatcher patterns='(?:(?:|.*/)Procyonidae$)'>
422 $ hg debugwalk -v 'relglob:Procyonidae/**'
524 $ hg debugwalk -v 'relglob:Procyonidae/**'
423 matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$)'>
525 * matcher:
526 <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$)'>
424 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
527 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
425 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
528 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
426 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
529 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
427 $ hg debugwalk -v 'relglob:Procyonidae/**' fennel
530 $ hg debugwalk -v 'relglob:Procyonidae/**' fennel
428 matcher: <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$|fennel(?:/|$))'>
531 * matcher:
532 <patternmatcher patterns='(?:(?:|.*/)Procyonidae\\/.*$|fennel(?:/|$))'>
429 f fennel fennel exact
533 f fennel fennel exact
430 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
534 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
431 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
535 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
432 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
536 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
433 $ hg debugwalk -v beans 'glob:beans/*'
537 $ hg debugwalk -v beans 'glob:beans/*'
434 matcher: <patternmatcher patterns='(?:beans(?:/|$)|beans\\/[^/]*$)'>
538 * matcher:
539 <patternmatcher patterns='(?:beans(?:/|$)|beans\\/[^/]*$)'>
435 f beans/black beans/black
540 f beans/black beans/black
436 f beans/borlotti beans/borlotti
541 f beans/borlotti beans/borlotti
437 f beans/kidney beans/kidney
542 f beans/kidney beans/kidney
@@ -439,78 +544,93 b' Test patterns:'
439 f beans/pinto beans/pinto
544 f beans/pinto beans/pinto
440 f beans/turtle beans/turtle
545 f beans/turtle beans/turtle
441 $ hg debugwalk -v 'glob:mamm**'
546 $ hg debugwalk -v 'glob:mamm**'
442 matcher: <patternmatcher patterns='(?:mamm.*$)'>
547 * matcher:
548 <patternmatcher patterns='(?:mamm.*$)'>
443 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
549 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
444 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
550 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
445 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
551 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
446 f mammals/skunk mammals/skunk
552 f mammals/skunk mammals/skunk
447 $ hg debugwalk -v 'glob:mamm**' fennel
553 $ hg debugwalk -v 'glob:mamm**' fennel
448 matcher: <patternmatcher patterns='(?:mamm.*$|fennel(?:/|$))'>
554 * matcher:
555 <patternmatcher patterns='(?:mamm.*$|fennel(?:/|$))'>
449 f fennel fennel exact
556 f fennel fennel exact
450 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
557 f mammals/Procyonidae/cacomistle mammals/Procyonidae/cacomistle
451 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
558 f mammals/Procyonidae/coatimundi mammals/Procyonidae/coatimundi
452 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
559 f mammals/Procyonidae/raccoon mammals/Procyonidae/raccoon
453 f mammals/skunk mammals/skunk
560 f mammals/skunk mammals/skunk
454 $ hg debugwalk -v 'glob:j*'
561 $ hg debugwalk -v 'glob:j*'
455 matcher: <patternmatcher patterns='(?:j[^/]*$)'>
562 * matcher:
563 <patternmatcher patterns='(?:j[^/]*$)'>
456 $ hg debugwalk -v NOEXIST
564 $ hg debugwalk -v NOEXIST
457 matcher: <patternmatcher patterns='(?:NOEXIST(?:/|$))'>
565 * matcher:
566 <patternmatcher patterns='(?:NOEXIST(?:/|$))'>
458 NOEXIST: * (glob)
567 NOEXIST: * (glob)
459
568
460 #if fifo
569 #if fifo
461 $ mkfifo fifo
570 $ mkfifo fifo
462 $ hg debugwalk -v fifo
571 $ hg debugwalk -v fifo
463 matcher: <patternmatcher patterns='(?:fifo(?:/|$))'>
572 * matcher:
573 <patternmatcher patterns='(?:fifo(?:/|$))'>
464 fifo: unsupported file type (type is fifo)
574 fifo: unsupported file type (type is fifo)
465 #endif
575 #endif
466
576
467 $ rm fenugreek
577 $ rm fenugreek
468 $ hg debugwalk -v fenugreek
578 $ hg debugwalk -v fenugreek
469 matcher: <patternmatcher patterns='(?:fenugreek(?:/|$))'>
579 * matcher:
580 <patternmatcher patterns='(?:fenugreek(?:/|$))'>
470 f fenugreek fenugreek exact
581 f fenugreek fenugreek exact
471 $ hg rm fenugreek
582 $ hg rm fenugreek
472 $ hg debugwalk -v fenugreek
583 $ hg debugwalk -v fenugreek
473 matcher: <patternmatcher patterns='(?:fenugreek(?:/|$))'>
584 * matcher:
585 <patternmatcher patterns='(?:fenugreek(?:/|$))'>
474 f fenugreek fenugreek exact
586 f fenugreek fenugreek exact
475 $ touch new
587 $ touch new
476 $ hg debugwalk -v new
588 $ hg debugwalk -v new
477 matcher: <patternmatcher patterns='(?:new(?:/|$))'>
589 * matcher:
590 <patternmatcher patterns='(?:new(?:/|$))'>
478 f new new exact
591 f new new exact
479
592
480 $ mkdir ignored
593 $ mkdir ignored
481 $ touch ignored/file
594 $ touch ignored/file
482 $ echo '^ignored$' > .hgignore
595 $ echo '^ignored$' > .hgignore
483 $ hg debugwalk -v ignored
596 $ hg debugwalk -v ignored
484 matcher: <patternmatcher patterns='(?:ignored(?:/|$))'>
597 * matcher:
598 <patternmatcher patterns='(?:ignored(?:/|$))'>
485 $ hg debugwalk -v ignored/file
599 $ hg debugwalk -v ignored/file
486 matcher: <patternmatcher patterns='(?:ignored\\/file(?:/|$))'>
600 * matcher:
601 <patternmatcher patterns='(?:ignored\\/file(?:/|$))'>
487 f ignored/file ignored/file exact
602 f ignored/file ignored/file exact
488
603
489 Test listfile and listfile0
604 Test listfile and listfile0
490
605
491 $ $PYTHON -c "open('listfile0', 'wb').write(b'fenugreek\0new\0')"
606 $ $PYTHON -c "open('listfile0', 'wb').write(b'fenugreek\0new\0')"
492 $ hg debugwalk -v -I 'listfile0:listfile0'
607 $ hg debugwalk -v -I 'listfile0:listfile0'
493 matcher: <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$))'>
608 * matcher:
609 <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$))'>
494 f fenugreek fenugreek
610 f fenugreek fenugreek
495 f new new
611 f new new
496 $ $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')"
497 $ hg debugwalk -v -I 'listfile:listfile'
613 $ hg debugwalk -v -I 'listfile:listfile'
498 matcher: <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$)|mammals\\/skunk(?:/|$))'>
614 * matcher:
615 <includematcher includes='(?:fenugreek(?:/|$)|new(?:/|$)|mammals\\/skunk(?:/|$))'>
499 f fenugreek fenugreek
616 f fenugreek fenugreek
500 f mammals/skunk mammals/skunk
617 f mammals/skunk mammals/skunk
501 f new new
618 f new new
502
619
503 $ cd ..
620 $ cd ..
504 $ hg debugwalk -v -R t t/mammals/skunk
621 $ hg debugwalk -v -R t t/mammals/skunk
505 matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'>
622 * matcher:
623 <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'>
506 f mammals/skunk t/mammals/skunk exact
624 f mammals/skunk t/mammals/skunk exact
507 $ mkdir t2
625 $ mkdir t2
508 $ cd t2
626 $ cd t2
509 $ hg debugwalk -v -R ../t ../t/mammals/skunk
627 $ hg debugwalk -v -R ../t ../t/mammals/skunk
510 matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'>
628 * matcher:
629 <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'>
511 f mammals/skunk ../t/mammals/skunk exact
630 f mammals/skunk ../t/mammals/skunk exact
512 $ hg debugwalk -v --cwd ../t mammals/skunk
631 $ hg debugwalk -v --cwd ../t mammals/skunk
513 matcher: <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'>
632 * matcher:
633 <patternmatcher patterns='(?:mammals\\/skunk(?:/|$))'>
514 f mammals/skunk mammals/skunk exact
634 f mammals/skunk mammals/skunk exact
515
635
516 $ cd ..
636 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now