##// END OF EJS Templates
tests: improve the widening testing in test-narrow-widen*...
Pulkit Goyal -
r39502:83dd6565 default
parent child Browse files
Show More
@@ -1,385 +1,389 b''
1 #testcases tree flat
1 #testcases tree flat
2 $ . "$TESTDIR/narrow-library.sh"
2 $ . "$TESTDIR/narrow-library.sh"
3
3
4 #if tree
4 #if tree
5 $ cat << EOF >> $HGRCPATH
5 $ cat << EOF >> $HGRCPATH
6 > [experimental]
6 > [experimental]
7 > treemanifest = 1
7 > treemanifest = 1
8 > EOF
8 > EOF
9 #endif
9 #endif
10
10
11 $ hg init master
11 $ hg init master
12 $ cd master
12 $ cd master
13
13
14 $ mkdir inside
14 $ mkdir inside
15 $ echo 'inside' > inside/f
15 $ echo 'inside' > inside/f
16 $ hg add inside/f
16 $ hg add inside/f
17 $ hg commit -m 'add inside'
17 $ hg commit -m 'add inside'
18
18
19 $ mkdir widest
19 $ mkdir widest
20 $ echo 'widest' > widest/f
20 $ echo 'widest' > widest/f
21 $ hg add widest/f
21 $ hg add widest/f
22 $ hg commit -m 'add widest'
22 $ hg commit -m 'add widest'
23
23
24 $ mkdir outside
24 $ mkdir outside
25 $ echo 'outside' > outside/f
25 $ echo 'outside' > outside/f
26 $ hg add outside/f
26 $ hg add outside/f
27 $ hg commit -m 'add outside'
27 $ hg commit -m 'add outside'
28
28
29 $ cd ..
29 $ cd ..
30
30
31 narrow clone the inside file
31 narrow clone the inside file
32
32
33 $ hg clone --narrow ssh://user@dummy/master narrow --include inside
33 $ hg clone --narrow ssh://user@dummy/master narrow --include inside
34 requesting all changes
34 requesting all changes
35 adding changesets
35 adding changesets
36 adding manifests
36 adding manifests
37 adding file changes
37 adding file changes
38 added 3 changesets with 1 changes to 1 files
38 added 3 changesets with 1 changes to 1 files
39 new changesets *:* (glob)
39 new changesets *:* (glob)
40 updating to branch default
40 updating to branch default
41 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
41 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
42 $ cd narrow
42 $ cd narrow
43 $ hg tracked
43 $ hg tracked
44 I path:inside
44 I path:inside
45 $ ls
45 $ ls
46 inside
46 inside
47 $ cat inside/f
47 $ cat inside/f
48 inside
48 inside
49 $ cd ..
49 $ cd ..
50
50
51 add more upstream files which we will include in a wider narrow spec
51 add more upstream files which we will include in a wider narrow spec
52
52
53 $ cd master
53 $ cd master
54
54
55 $ mkdir wider
55 $ mkdir wider
56 $ echo 'wider' > wider/f
56 $ echo 'wider' > wider/f
57 $ hg add wider/f
57 $ hg add wider/f
58 $ echo 'widest v2' > widest/f
58 $ echo 'widest v2' > widest/f
59 $ hg commit -m 'add wider, update widest'
59 $ hg commit -m 'add wider, update widest'
60
60
61 $ echo 'widest v3' > widest/f
61 $ echo 'widest v3' > widest/f
62 $ hg commit -m 'update widest v3'
62 $ hg commit -m 'update widest v3'
63
63
64 $ echo 'inside v2' > inside/f
64 $ echo 'inside v2' > inside/f
65 $ hg commit -m 'update inside'
65 $ hg commit -m 'update inside'
66
66
67 $ mkdir outside2
67 $ mkdir outside2
68 $ echo 'outside2' > outside2/f
68 $ echo 'outside2' > outside2/f
69 $ hg add outside2/f
69 $ hg add outside2/f
70 $ hg commit -m 'add outside2'
70 $ hg commit -m 'add outside2'
71
71
72 $ echo 'widest v4' > widest/f
72 $ echo 'widest v4' > widest/f
73 $ hg commit -m 'update widest v4'
73 $ hg commit -m 'update widest v4'
74
74
75 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
75 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
76 7: update widest v4
76 7: update widest v4
77 6: add outside2
77 6: add outside2
78 5: update inside
78 5: update inside
79 4: update widest v3
79 4: update widest v3
80 3: add wider, update widest
80 3: add wider, update widest
81 2: add outside
81 2: add outside
82 1: add widest
82 1: add widest
83 0: add inside
83 0: add inside
84
84
85 $ cd ..
85 $ cd ..
86
86
87 Widen the narrow spec to see the wider file. This should not get the newly
87 Widen the narrow spec to see the widest file. This should not get the newly
88 added upstream revisions.
88 added upstream revisions.
89
89
90 $ cd narrow
90 $ cd narrow
91 $ hg tracked --addinclude wider/f
91 $ hg tracked --addinclude widest/f
92 comparing with ssh://user@dummy/master
92 comparing with ssh://user@dummy/master
93 searching for changes
93 searching for changes
94 no changes found
94 no changes found
95 adding changesets
95 adding changesets
96 adding manifests
96 adding manifests
97 adding file changes
97 adding file changes
98 added 0 changesets with 0 changes to 1 files
98 added 0 changesets with 1 changes to 2 files
99 3 local changesets published
99 3 local changesets published
100 $ hg tracked
100 $ hg tracked
101 I path:inside
101 I path:inside
102 I path:wider/f
102 I path:widest/f
103
104 $ cat widest/f
105 widest
103
106
104 Pull down the newly added upstream revision.
107 Pull down the newly added upstream revision.
105
108
106 $ hg pull
109 $ hg pull
107 pulling from ssh://user@dummy/master
110 pulling from ssh://user@dummy/master
108 searching for changes
111 searching for changes
109 adding changesets
112 adding changesets
110 adding manifests
113 adding manifests
111 adding file changes
114 adding file changes
112 added 5 changesets with 2 changes to 2 files
115 added 5 changesets with 4 changes to 2 files
113 new changesets *:* (glob)
116 new changesets *:* (glob)
114 (run 'hg update' to get a working copy)
117 (run 'hg update' to get a working copy)
115 $ hg update -r 'desc("add wider")'
118 $ hg update -r 'desc("add wider")'
116 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
119 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
117 $ cat wider/f
120
118 wider
121 $ cat widest/f
122 widest v2
119
123
120 $ hg update -r 'desc("update inside")'
124 $ hg update -r 'desc("update inside")'
121 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
125 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
122 $ cat wider/f
126 $ cat widest/f
123 wider
127 widest v3
124 $ cat inside/f
128 $ cat inside/f
125 inside v2
129 inside v2
126
130
127 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
131 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
128 7: update widest v4
132 7: update widest v4
129 6: add outside2
133 6: add outside2
130 5: update inside
134 5: update inside
131 4: update widest v3
135 4: update widest v3
132 3: add wider, update widest
136 3: add wider, update widest
133 2: add outside
137 2: add outside
134 1: add widest
138 1: add widest
135 0: add inside
139 0: add inside
136
140
137 Check that widening with a newline fails
141 Check that widening with a newline fails
138
142
139 $ hg tracked --addinclude 'widest
143 $ hg tracked --addinclude 'widest
140 > '
144 > '
141 abort: newlines are not allowed in narrowspec paths
145 abort: newlines are not allowed in narrowspec paths
142 [255]
146 [255]
143
147
144 widen the narrow spec to include the widest file
148 widen the narrow spec to include the wider file
145
149
146 $ hg tracked --addinclude widest
150 $ hg tracked --addinclude wider
147 comparing with ssh://user@dummy/master
151 comparing with ssh://user@dummy/master
148 searching for changes
152 searching for changes
149 no changes found
153 no changes found
150 adding changesets
154 adding changesets
151 adding manifests
155 adding manifests
152 adding file changes
156 adding file changes
153 added 0 changesets with 4 changes to 3 files
157 added 0 changesets with 1 changes to 3 files
154 5 local changesets published
158 5 local changesets published
155 $ hg tracked
159 $ hg tracked
156 I path:inside
160 I path:inside
157 I path:wider/f
161 I path:wider
158 I path:widest
162 I path:widest/f
159 $ hg update 'desc("add widest")'
163 $ hg update 'desc("add widest")'
160 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
164 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
161 $ cat widest/f
165 $ cat widest/f
162 widest
166 widest
163 $ hg update 'desc("add wider, update widest")'
167 $ hg update 'desc("add wider, update widest")'
164 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
168 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
165 $ cat wider/f
169 $ cat wider/f
166 wider
170 wider
167 $ cat widest/f
171 $ cat widest/f
168 widest v2
172 widest v2
169 $ hg update 'desc("update widest v3")'
173 $ hg update 'desc("update widest v3")'
170 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
174 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
171 $ cat widest/f
175 $ cat widest/f
172 widest v3
176 widest v3
173 $ hg update 'desc("update widest v4")'
177 $ hg update 'desc("update widest v4")'
174 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
178 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
175 $ cat widest/f
179 $ cat widest/f
176 widest v4
180 widest v4
177
181
178 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
182 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
179 7: update widest v4
183 7: update widest v4
180 6: add outside2
184 6: add outside2
181 5: update inside
185 5: update inside
182 4: update widest v3
186 4: update widest v3
183 3: add wider, update widest
187 3: add wider, update widest
184 2: add outside
188 2: add outside
185 1: add widest
189 1: add widest
186 0: add inside
190 0: add inside
187
191
188 separate suite of tests: files from 0-10 modified in changes 0-10. This allows
192 separate suite of tests: files from 0-10 modified in changes 0-10. This allows
189 more obvious precise tests tickling particular corner cases.
193 more obvious precise tests tickling particular corner cases.
190
194
191 $ cd ..
195 $ cd ..
192 $ hg init upstream
196 $ hg init upstream
193 $ cd upstream
197 $ cd upstream
194 $ for x in `$TESTDIR/seq.py 0 10`
198 $ for x in `$TESTDIR/seq.py 0 10`
195 > do
199 > do
196 > mkdir d$x
200 > mkdir d$x
197 > echo $x > d$x/f
201 > echo $x > d$x/f
198 > hg add d$x/f
202 > hg add d$x/f
199 > hg commit -m "add d$x/f"
203 > hg commit -m "add d$x/f"
200 > done
204 > done
201 $ hg log -T "{rev}: {desc}\n"
205 $ hg log -T "{rev}: {desc}\n"
202 10: add d10/f
206 10: add d10/f
203 9: add d9/f
207 9: add d9/f
204 8: add d8/f
208 8: add d8/f
205 7: add d7/f
209 7: add d7/f
206 6: add d6/f
210 6: add d6/f
207 5: add d5/f
211 5: add d5/f
208 4: add d4/f
212 4: add d4/f
209 3: add d3/f
213 3: add d3/f
210 2: add d2/f
214 2: add d2/f
211 1: add d1/f
215 1: add d1/f
212 0: add d0/f
216 0: add d0/f
213
217
214 make narrow clone with every third node.
218 make narrow clone with every third node.
215
219
216 $ cd ..
220 $ cd ..
217 $ hg clone --narrow ssh://user@dummy/upstream narrow2 --include d0 --include d3 --include d6 --include d9
221 $ hg clone --narrow ssh://user@dummy/upstream narrow2 --include d0 --include d3 --include d6 --include d9
218 requesting all changes
222 requesting all changes
219 adding changesets
223 adding changesets
220 adding manifests
224 adding manifests
221 adding file changes
225 adding file changes
222 added 11 changesets with 4 changes to 4 files
226 added 11 changesets with 4 changes to 4 files
223 new changesets *:* (glob)
227 new changesets *:* (glob)
224 updating to branch default
228 updating to branch default
225 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
229 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
226 $ cd narrow2
230 $ cd narrow2
227 $ hg tracked
231 $ hg tracked
228 I path:d0
232 I path:d0
229 I path:d3
233 I path:d3
230 I path:d6
234 I path:d6
231 I path:d9
235 I path:d9
232 $ hg verify
236 $ hg verify
233 checking changesets
237 checking changesets
234 checking manifests
238 checking manifests
235 checking directory manifests (tree !)
239 checking directory manifests (tree !)
236 crosschecking files in changesets and manifests
240 crosschecking files in changesets and manifests
237 checking files
241 checking files
238 4 files, 11 changesets, 4 total revisions
242 4 files, 11 changesets, 4 total revisions
239 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
243 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
240 10: add d10/f
244 10: add d10/f
241 9: add d9/f
245 9: add d9/f
242 8: add d8/f
246 8: add d8/f
243 7: add d7/f
247 7: add d7/f
244 6: add d6/f
248 6: add d6/f
245 5: add d5/f
249 5: add d5/f
246 4: add d4/f
250 4: add d4/f
247 3: add d3/f
251 3: add d3/f
248 2: add d2/f
252 2: add d2/f
249 1: add d1/f
253 1: add d1/f
250 0: add d0/f
254 0: add d0/f
251 $ hg tracked --addinclude d1
255 $ hg tracked --addinclude d1
252 comparing with ssh://user@dummy/upstream
256 comparing with ssh://user@dummy/upstream
253 searching for changes
257 searching for changes
254 no changes found
258 no changes found
255 adding changesets
259 adding changesets
256 adding manifests
260 adding manifests
257 adding file changes
261 adding file changes
258 added 0 changesets with 1 changes to 5 files
262 added 0 changesets with 1 changes to 5 files
259 11 local changesets published
263 11 local changesets published
260 $ hg tracked
264 $ hg tracked
261 I path:d0
265 I path:d0
262 I path:d1
266 I path:d1
263 I path:d3
267 I path:d3
264 I path:d6
268 I path:d6
265 I path:d9
269 I path:d9
266 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
270 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
267 10: add d10/f
271 10: add d10/f
268 9: add d9/f
272 9: add d9/f
269 8: add d8/f
273 8: add d8/f
270 7: add d7/f
274 7: add d7/f
271 6: add d6/f
275 6: add d6/f
272 5: add d5/f
276 5: add d5/f
273 4: add d4/f
277 4: add d4/f
274 3: add d3/f
278 3: add d3/f
275 2: add d2/f
279 2: add d2/f
276 1: add d1/f
280 1: add d1/f
277 0: add d0/f
281 0: add d0/f
278
282
279 Verify shouldn't claim the repo is corrupt after a widen.
283 Verify shouldn't claim the repo is corrupt after a widen.
280
284
281 $ hg verify
285 $ hg verify
282 checking changesets
286 checking changesets
283 checking manifests
287 checking manifests
284 checking directory manifests (tree !)
288 checking directory manifests (tree !)
285 crosschecking files in changesets and manifests
289 crosschecking files in changesets and manifests
286 checking files
290 checking files
287 5 files, 11 changesets, 5 total revisions
291 5 files, 11 changesets, 5 total revisions
288
292
289 Widening preserves parent of local commit
293 Widening preserves parent of local commit
290
294
291 $ cd ..
295 $ cd ..
292 $ hg clone -q --narrow ssh://user@dummy/upstream narrow3 --include d2 -r 2
296 $ hg clone -q --narrow ssh://user@dummy/upstream narrow3 --include d2 -r 2
293 $ cd narrow3
297 $ cd narrow3
294 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
298 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
295 2: add d2/f
299 2: add d2/f
296 1: add d1/f
300 1: add d1/f
297 0: add d0/f
301 0: add d0/f
298 $ hg pull -q -r 3
302 $ hg pull -q -r 3
299 $ hg co -q tip
303 $ hg co -q tip
300 $ hg pull -q -r 4
304 $ hg pull -q -r 4
301 $ echo local > d2/f
305 $ echo local > d2/f
302 $ hg ci -m local
306 $ hg ci -m local
303 created new head
307 created new head
304 $ hg tracked -q --addinclude d0 --addinclude d9
308 $ hg tracked -q --addinclude d0 --addinclude d9
305
309
306 Widening preserves bookmarks
310 Widening preserves bookmarks
307
311
308 $ cd ..
312 $ cd ..
309 $ hg clone -q --narrow ssh://user@dummy/upstream narrow-bookmarks --include d4
313 $ hg clone -q --narrow ssh://user@dummy/upstream narrow-bookmarks --include d4
310 $ cd narrow-bookmarks
314 $ cd narrow-bookmarks
311 $ echo local > d4/f
315 $ echo local > d4/f
312 $ hg ci -m local
316 $ hg ci -m local
313 $ hg bookmarks bookmark
317 $ hg bookmarks bookmark
314 $ hg bookmarks
318 $ hg bookmarks
315 * bookmark 11:* (glob)
319 * bookmark 11:* (glob)
316 $ hg -q tracked --addinclude d2
320 $ hg -q tracked --addinclude d2
317 $ hg bookmarks
321 $ hg bookmarks
318 * bookmark 11:* (glob)
322 * bookmark 11:* (glob)
319 $ hg log -r bookmark -T '{desc}\n'
323 $ hg log -r bookmark -T '{desc}\n'
320 local
324 local
321
325
322 Widening that fails can be recovered from
326 Widening that fails can be recovered from
323
327
324 $ cd ..
328 $ cd ..
325 $ hg clone -q --narrow ssh://user@dummy/upstream interrupted --include d0
329 $ hg clone -q --narrow ssh://user@dummy/upstream interrupted --include d0
326 $ cd interrupted
330 $ cd interrupted
327 $ echo local > d0/f
331 $ echo local > d0/f
328 $ hg ci -m local
332 $ hg ci -m local
329 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
333 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
330 11: local
334 11: local
331 10: add d10/f
335 10: add d10/f
332 9: add d9/f
336 9: add d9/f
333 8: add d8/f
337 8: add d8/f
334 7: add d7/f
338 7: add d7/f
335 6: add d6/f
339 6: add d6/f
336 5: add d5/f
340 5: add d5/f
337 4: add d4/f
341 4: add d4/f
338 3: add d3/f
342 3: add d3/f
339 2: add d2/f
343 2: add d2/f
340 1: add d1/f
344 1: add d1/f
341 0: add d0/f
345 0: add d0/f
342 $ hg bookmarks bookmark
346 $ hg bookmarks bookmark
343 $ hg --config hooks.pretxnchangegroup.bad=false tracked --addinclude d1
347 $ hg --config hooks.pretxnchangegroup.bad=false tracked --addinclude d1
344 comparing with ssh://user@dummy/upstream
348 comparing with ssh://user@dummy/upstream
345 searching for changes
349 searching for changes
346 no changes found
350 no changes found
347 adding changesets
351 adding changesets
348 adding manifests
352 adding manifests
349 adding file changes
353 adding file changes
350 added 0 changesets with 1 changes to 2 files
354 added 0 changesets with 1 changes to 2 files
351 11 local changesets published
355 11 local changesets published
352 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
356 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
353 11: local
357 11: local
354 10: add d10/f
358 10: add d10/f
355 9: add d9/f
359 9: add d9/f
356 8: add d8/f
360 8: add d8/f
357 7: add d7/f
361 7: add d7/f
358 6: add d6/f
362 6: add d6/f
359 5: add d5/f
363 5: add d5/f
360 4: add d4/f
364 4: add d4/f
361 3: add d3/f
365 3: add d3/f
362 2: add d2/f
366 2: add d2/f
363 1: add d1/f
367 1: add d1/f
364 0: add d0/f
368 0: add d0/f
365 $ hg bookmarks
369 $ hg bookmarks
366 * bookmark 11:* (glob)
370 * bookmark 11:* (glob)
367 $ hg unbundle .hg/strip-backup/*-widen.hg
371 $ hg unbundle .hg/strip-backup/*-widen.hg
368 abort: .hg/strip-backup/*-widen.hg: $ENOTDIR$ (windows !)
372 abort: .hg/strip-backup/*-widen.hg: $ENOTDIR$ (windows !)
369 abort: $ENOENT$: .hg/strip-backup/*-widen.hg (no-windows !)
373 abort: $ENOENT$: .hg/strip-backup/*-widen.hg (no-windows !)
370 [255]
374 [255]
371 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
375 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
372 11: local
376 11: local
373 10: add d10/f
377 10: add d10/f
374 9: add d9/f
378 9: add d9/f
375 8: add d8/f
379 8: add d8/f
376 7: add d7/f
380 7: add d7/f
377 6: add d6/f
381 6: add d6/f
378 5: add d5/f
382 5: add d5/f
379 4: add d4/f
383 4: add d4/f
380 3: add d3/f
384 3: add d3/f
381 2: add d2/f
385 2: add d2/f
382 1: add d1/f
386 1: add d1/f
383 0: add d0/f
387 0: add d0/f
384 $ hg bookmarks
388 $ hg bookmarks
385 * bookmark 11:* (glob)
389 * bookmark 11:* (glob)
@@ -1,365 +1,370 b''
1 #testcases flat tree
1 #testcases flat tree
2 $ . "$TESTDIR/narrow-library.sh"
2 $ . "$TESTDIR/narrow-library.sh"
3
3
4 #if tree
4 #if tree
5 $ cat << EOF >> $HGRCPATH
5 $ cat << EOF >> $HGRCPATH
6 > [experimental]
6 > [experimental]
7 > treemanifest = 1
7 > treemanifest = 1
8 > EOF
8 > EOF
9 #endif
9 #endif
10
10
11 $ hg init master
11 $ hg init master
12 $ cd master
12 $ cd master
13 $ cat >> .hg/hgrc <<EOF
13 $ cat >> .hg/hgrc <<EOF
14 > [narrow]
14 > [narrow]
15 > serveellipses=True
15 > serveellipses=True
16 > EOF
16 > EOF
17
17
18 $ mkdir inside
18 $ mkdir inside
19 $ echo 'inside' > inside/f
19 $ echo 'inside' > inside/f
20 $ hg add inside/f
20 $ hg add inside/f
21 $ hg commit -m 'add inside'
21 $ hg commit -m 'add inside'
22
22
23 $ mkdir widest
23 $ mkdir widest
24 $ echo 'widest' > widest/f
24 $ echo 'widest' > widest/f
25 $ hg add widest/f
25 $ hg add widest/f
26 $ hg commit -m 'add widest'
26 $ hg commit -m 'add widest'
27
27
28 $ mkdir outside
28 $ mkdir outside
29 $ echo 'outside' > outside/f
29 $ echo 'outside' > outside/f
30 $ hg add outside/f
30 $ hg add outside/f
31 $ hg commit -m 'add outside'
31 $ hg commit -m 'add outside'
32
32
33 $ cd ..
33 $ cd ..
34
34
35 narrow clone the inside file
35 narrow clone the inside file
36
36
37 $ hg clone --narrow ssh://user@dummy/master narrow --include inside
37 $ hg clone --narrow ssh://user@dummy/master narrow --include inside
38 requesting all changes
38 requesting all changes
39 adding changesets
39 adding changesets
40 adding manifests
40 adding manifests
41 adding file changes
41 adding file changes
42 added 2 changesets with 1 changes to 1 files
42 added 2 changesets with 1 changes to 1 files
43 new changesets *:* (glob)
43 new changesets *:* (glob)
44 updating to branch default
44 updating to branch default
45 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
45 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
46 $ cd narrow
46 $ cd narrow
47 $ hg tracked
47 $ hg tracked
48 I path:inside
48 I path:inside
49 $ ls
49 $ ls
50 inside
50 inside
51 $ cat inside/f
51 $ cat inside/f
52 inside
52 inside
53 $ cd ..
53 $ cd ..
54
54
55 add more upstream files which we will include in a wider narrow spec
55 add more upstream files which we will include in a wider narrow spec
56
56
57 $ cd master
57 $ cd master
58
58
59 $ mkdir wider
59 $ mkdir wider
60 $ echo 'wider' > wider/f
60 $ echo 'wider' > wider/f
61 $ hg add wider/f
61 $ hg add wider/f
62 $ echo 'widest v2' > widest/f
62 $ echo 'widest v2' > widest/f
63 $ hg commit -m 'add wider, update widest'
63 $ hg commit -m 'add wider, update widest'
64
64
65 $ echo 'widest v3' > widest/f
65 $ echo 'widest v3' > widest/f
66 $ hg commit -m 'update widest v3'
66 $ hg commit -m 'update widest v3'
67
67
68 $ echo 'inside v2' > inside/f
68 $ echo 'inside v2' > inside/f
69 $ hg commit -m 'update inside'
69 $ hg commit -m 'update inside'
70
70
71 $ mkdir outside2
71 $ mkdir outside2
72 $ echo 'outside2' > outside2/f
72 $ echo 'outside2' > outside2/f
73 $ hg add outside2/f
73 $ hg add outside2/f
74 $ hg commit -m 'add outside2'
74 $ hg commit -m 'add outside2'
75
75
76 $ echo 'widest v4' > widest/f
76 $ echo 'widest v4' > widest/f
77 $ hg commit -m 'update widest v4'
77 $ hg commit -m 'update widest v4'
78
78
79 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
79 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
80 7: update widest v4
80 7: update widest v4
81 6: add outside2
81 6: add outside2
82 5: update inside
82 5: update inside
83 4: update widest v3
83 4: update widest v3
84 3: add wider, update widest
84 3: add wider, update widest
85 2: add outside
85 2: add outside
86 1: add widest
86 1: add widest
87 0: add inside
87 0: add inside
88
88
89 $ cd ..
89 $ cd ..
90
90
91 Widen the narrow spec to see the wider file. This should not get the newly
91 Widen the narrow spec to see the widest file. This should not get the newly
92 added upstream revisions.
92 added upstream revisions.
93
93
94 $ cd narrow
94 $ cd narrow
95 $ hg tracked --addinclude wider/f
95 $ hg tracked --addinclude widest/f
96 comparing with ssh://user@dummy/master
96 comparing with ssh://user@dummy/master
97 searching for changes
97 searching for changes
98 no changes found
98 no changes found
99 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
99 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
100 adding changesets
100 adding changesets
101 adding manifests
101 adding manifests
102 adding file changes
102 adding file changes
103 added 2 changesets with 1 changes to 1 files
103 added 3 changesets with 2 changes to 2 files
104 new changesets *:* (glob)
104 new changesets *:* (glob)
105 $ hg tracked
105 $ hg tracked
106 I path:inside
106 I path:inside
107 I path:wider/f
107 I path:widest/f
108
109 $ cat widest/f
110 widest
108
111
109 Pull down the newly added upstream revision.
112 Pull down the newly added upstream revision.
110
113
111 $ hg pull
114 $ hg pull
112 pulling from ssh://user@dummy/master
115 pulling from ssh://user@dummy/master
113 searching for changes
116 searching for changes
114 adding changesets
117 adding changesets
115 adding manifests
118 adding manifests
116 adding file changes
119 adding file changes
117 added 4 changesets with 2 changes to 2 files
120 added 5 changesets with 4 changes to 2 files
118 new changesets *:* (glob)
121 new changesets *:* (glob)
119 (run 'hg update' to get a working copy)
122 (run 'hg update' to get a working copy)
120 $ hg update -r 'desc("add wider")'
123 $ hg update -r 'desc("add wider")'
121 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
124 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
122 $ cat wider/f
125 $ cat widest/f
123 wider
126 widest v2
124
127
125 $ hg update -r 'desc("update inside")'
128 $ hg update -r 'desc("update inside")'
126 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
129 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
127 $ cat wider/f
130 $ cat widest/f
128 wider
131 widest v3
129 $ cat inside/f
132 $ cat inside/f
130 inside v2
133 inside v2
131
134
132 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
135 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
133 ...5: update widest v4
136 7: update widest v4
134 4: update inside
137 ...6: add outside2
135 ...3: update widest v3
138 5: update inside
136 2: add wider, update widest
139 4: update widest v3
137 ...1: add outside
140 3: add wider, update widest
141 ...2: add outside
142 1: add widest
138 0: add inside
143 0: add inside
139
144
140 Check that widening with a newline fails
145 Check that widening with a newline fails
141
146
142 $ hg tracked --addinclude 'widest
147 $ hg tracked --addinclude 'widest
143 > '
148 > '
144 abort: newlines are not allowed in narrowspec paths
149 abort: newlines are not allowed in narrowspec paths
145 [255]
150 [255]
146
151
147 widen the narrow spec to include the widest file
152 widen the narrow spec to include the wider file
148
153
149 $ hg tracked --addinclude widest
154 $ hg tracked --addinclude wider
150 comparing with ssh://user@dummy/master
155 comparing with ssh://user@dummy/master
151 searching for changes
156 searching for changes
152 no changes found
157 no changes found
153 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
158 saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob)
154 adding changesets
159 adding changesets
155 adding manifests
160 adding manifests
156 adding file changes
161 adding file changes
157 added 8 changesets with 7 changes to 3 files
162 added 8 changesets with 7 changes to 3 files
158 new changesets *:* (glob)
163 new changesets *:* (glob)
159 $ hg tracked
164 $ hg tracked
160 I path:inside
165 I path:inside
161 I path:wider/f
166 I path:wider
162 I path:widest
167 I path:widest/f
163 $ hg update 'desc("add widest")'
168 $ hg update 'desc("add widest")'
164 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
169 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
165 $ cat widest/f
170 $ cat widest/f
166 widest
171 widest
167 $ hg update 'desc("add wider, update widest")'
172 $ hg update 'desc("add wider, update widest")'
168 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
173 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
169 $ cat wider/f
174 $ cat wider/f
170 wider
175 wider
171 $ cat widest/f
176 $ cat widest/f
172 widest v2
177 widest v2
173 $ hg update 'desc("update widest v3")'
178 $ hg update 'desc("update widest v3")'
174 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
179 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
175 $ cat widest/f
180 $ cat widest/f
176 widest v3
181 widest v3
177 $ hg update 'desc("update widest v4")'
182 $ hg update 'desc("update widest v4")'
178 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
183 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
179 $ cat widest/f
184 $ cat widest/f
180 widest v4
185 widest v4
181
186
182 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
187 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
183 7: update widest v4
188 7: update widest v4
184 ...6: add outside2
189 ...6: add outside2
185 5: update inside
190 5: update inside
186 4: update widest v3
191 4: update widest v3
187 3: add wider, update widest
192 3: add wider, update widest
188 ...2: add outside
193 ...2: add outside
189 1: add widest
194 1: add widest
190 0: add inside
195 0: add inside
191
196
192 separate suite of tests: files from 0-10 modified in changes 0-10. This allows
197 separate suite of tests: files from 0-10 modified in changes 0-10. This allows
193 more obvious precise tests tickling particular corner cases.
198 more obvious precise tests tickling particular corner cases.
194
199
195 $ cd ..
200 $ cd ..
196 $ hg init upstream
201 $ hg init upstream
197 $ cd upstream
202 $ cd upstream
198 $ cat >> .hg/hgrc <<EOF
203 $ cat >> .hg/hgrc <<EOF
199 > [narrow]
204 > [narrow]
200 > serveellipses=True
205 > serveellipses=True
201 > EOF
206 > EOF
202 $ for x in `$TESTDIR/seq.py 0 10`
207 $ for x in `$TESTDIR/seq.py 0 10`
203 > do
208 > do
204 > mkdir d$x
209 > mkdir d$x
205 > echo $x > d$x/f
210 > echo $x > d$x/f
206 > hg add d$x/f
211 > hg add d$x/f
207 > hg commit -m "add d$x/f"
212 > hg commit -m "add d$x/f"
208 > done
213 > done
209 $ hg log -T "{rev}: {desc}\n"
214 $ hg log -T "{rev}: {desc}\n"
210 10: add d10/f
215 10: add d10/f
211 9: add d9/f
216 9: add d9/f
212 8: add d8/f
217 8: add d8/f
213 7: add d7/f
218 7: add d7/f
214 6: add d6/f
219 6: add d6/f
215 5: add d5/f
220 5: add d5/f
216 4: add d4/f
221 4: add d4/f
217 3: add d3/f
222 3: add d3/f
218 2: add d2/f
223 2: add d2/f
219 1: add d1/f
224 1: add d1/f
220 0: add d0/f
225 0: add d0/f
221
226
222 make narrow clone with every third node.
227 make narrow clone with every third node.
223
228
224 $ cd ..
229 $ cd ..
225 $ hg clone --narrow ssh://user@dummy/upstream narrow2 --include d0 --include d3 --include d6 --include d9
230 $ hg clone --narrow ssh://user@dummy/upstream narrow2 --include d0 --include d3 --include d6 --include d9
226 requesting all changes
231 requesting all changes
227 adding changesets
232 adding changesets
228 adding manifests
233 adding manifests
229 adding file changes
234 adding file changes
230 added 8 changesets with 4 changes to 4 files
235 added 8 changesets with 4 changes to 4 files
231 new changesets *:* (glob)
236 new changesets *:* (glob)
232 updating to branch default
237 updating to branch default
233 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
238 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
234 $ cd narrow2
239 $ cd narrow2
235 $ hg tracked
240 $ hg tracked
236 I path:d0
241 I path:d0
237 I path:d3
242 I path:d3
238 I path:d6
243 I path:d6
239 I path:d9
244 I path:d9
240 $ hg verify
245 $ hg verify
241 checking changesets
246 checking changesets
242 checking manifests
247 checking manifests
243 checking directory manifests (tree !)
248 checking directory manifests (tree !)
244 crosschecking files in changesets and manifests
249 crosschecking files in changesets and manifests
245 checking files
250 checking files
246 4 files, 8 changesets, 4 total revisions
251 4 files, 8 changesets, 4 total revisions
247 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
252 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
248 ...7: add d10/f
253 ...7: add d10/f
249 6: add d9/f
254 6: add d9/f
250 ...5: add d8/f
255 ...5: add d8/f
251 4: add d6/f
256 4: add d6/f
252 ...3: add d5/f
257 ...3: add d5/f
253 2: add d3/f
258 2: add d3/f
254 ...1: add d2/f
259 ...1: add d2/f
255 0: add d0/f
260 0: add d0/f
256 $ hg tracked --addinclude d1
261 $ hg tracked --addinclude d1
257 comparing with ssh://user@dummy/upstream
262 comparing with ssh://user@dummy/upstream
258 searching for changes
263 searching for changes
259 no changes found
264 no changes found
260 saved backup bundle to $TESTTMP/narrow2/.hg/strip-backup/*-widen.hg (glob)
265 saved backup bundle to $TESTTMP/narrow2/.hg/strip-backup/*-widen.hg (glob)
261 adding changesets
266 adding changesets
262 adding manifests
267 adding manifests
263 adding file changes
268 adding file changes
264 added 9 changesets with 5 changes to 5 files
269 added 9 changesets with 5 changes to 5 files
265 new changesets *:* (glob)
270 new changesets *:* (glob)
266 $ hg tracked
271 $ hg tracked
267 I path:d0
272 I path:d0
268 I path:d1
273 I path:d1
269 I path:d3
274 I path:d3
270 I path:d6
275 I path:d6
271 I path:d9
276 I path:d9
272 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
277 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
273 ...8: add d10/f
278 ...8: add d10/f
274 7: add d9/f
279 7: add d9/f
275 ...6: add d8/f
280 ...6: add d8/f
276 5: add d6/f
281 5: add d6/f
277 ...4: add d5/f
282 ...4: add d5/f
278 3: add d3/f
283 3: add d3/f
279 ...2: add d2/f
284 ...2: add d2/f
280 1: add d1/f
285 1: add d1/f
281 0: add d0/f
286 0: add d0/f
282
287
283 Verify shouldn't claim the repo is corrupt after a widen.
288 Verify shouldn't claim the repo is corrupt after a widen.
284
289
285 $ hg verify
290 $ hg verify
286 checking changesets
291 checking changesets
287 checking manifests
292 checking manifests
288 checking directory manifests (tree !)
293 checking directory manifests (tree !)
289 crosschecking files in changesets and manifests
294 crosschecking files in changesets and manifests
290 checking files
295 checking files
291 5 files, 9 changesets, 5 total revisions
296 5 files, 9 changesets, 5 total revisions
292
297
293 Widening preserves parent of local commit
298 Widening preserves parent of local commit
294
299
295 $ cd ..
300 $ cd ..
296 $ hg clone -q --narrow ssh://user@dummy/upstream narrow3 --include d2 -r 2
301 $ hg clone -q --narrow ssh://user@dummy/upstream narrow3 --include d2 -r 2
297 $ cd narrow3
302 $ cd narrow3
298 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
303 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
299 1: add d2/f
304 1: add d2/f
300 ...0: add d1/f
305 ...0: add d1/f
301 $ hg pull -q -r 3
306 $ hg pull -q -r 3
302 $ hg co -q tip
307 $ hg co -q tip
303 $ hg pull -q -r 4
308 $ hg pull -q -r 4
304 $ echo local > d2/f
309 $ echo local > d2/f
305 $ hg ci -m local
310 $ hg ci -m local
306 created new head
311 created new head
307 $ hg tracked -q --addinclude d0 --addinclude d9
312 $ hg tracked -q --addinclude d0 --addinclude d9
308
313
309 Widening preserves bookmarks
314 Widening preserves bookmarks
310
315
311 $ cd ..
316 $ cd ..
312 $ hg clone -q --narrow ssh://user@dummy/upstream narrow-bookmarks --include d4
317 $ hg clone -q --narrow ssh://user@dummy/upstream narrow-bookmarks --include d4
313 $ cd narrow-bookmarks
318 $ cd narrow-bookmarks
314 $ echo local > d4/f
319 $ echo local > d4/f
315 $ hg ci -m local
320 $ hg ci -m local
316 $ hg bookmarks bookmark
321 $ hg bookmarks bookmark
317 $ hg bookmarks
322 $ hg bookmarks
318 * bookmark 3:* (glob)
323 * bookmark 3:* (glob)
319 $ hg -q tracked --addinclude d2
324 $ hg -q tracked --addinclude d2
320 $ hg bookmarks
325 $ hg bookmarks
321 * bookmark 5:* (glob)
326 * bookmark 5:* (glob)
322 $ hg log -r bookmark -T '{desc}\n'
327 $ hg log -r bookmark -T '{desc}\n'
323 local
328 local
324
329
325 Widening that fails can be recovered from
330 Widening that fails can be recovered from
326
331
327 $ cd ..
332 $ cd ..
328 $ hg clone -q --narrow ssh://user@dummy/upstream interrupted --include d0
333 $ hg clone -q --narrow ssh://user@dummy/upstream interrupted --include d0
329 $ cd interrupted
334 $ cd interrupted
330 $ echo local > d0/f
335 $ echo local > d0/f
331 $ hg ci -m local
336 $ hg ci -m local
332 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
337 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
333 2: local
338 2: local
334 ...1: add d10/f
339 ...1: add d10/f
335 0: add d0/f
340 0: add d0/f
336 $ hg bookmarks bookmark
341 $ hg bookmarks bookmark
337 $ hg --config hooks.pretxnchangegroup.bad=false tracked --addinclude d1
342 $ hg --config hooks.pretxnchangegroup.bad=false tracked --addinclude d1
338 comparing with ssh://user@dummy/upstream
343 comparing with ssh://user@dummy/upstream
339 searching for changes
344 searching for changes
340 no changes found
345 no changes found
341 saved backup bundle to $TESTTMP/interrupted/.hg/strip-backup/*-widen.hg (glob)
346 saved backup bundle to $TESTTMP/interrupted/.hg/strip-backup/*-widen.hg (glob)
342 adding changesets
347 adding changesets
343 adding manifests
348 adding manifests
344 adding file changes
349 adding file changes
345 added 3 changesets with 2 changes to 2 files
350 added 3 changesets with 2 changes to 2 files
346 transaction abort!
351 transaction abort!
347 rollback completed
352 rollback completed
348 abort: pretxnchangegroup.bad hook exited with status 1
353 abort: pretxnchangegroup.bad hook exited with status 1
349 [255]
354 [255]
350 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
355 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
351 $ hg bookmarks
356 $ hg bookmarks
352 no bookmarks set
357 no bookmarks set
353 $ hg unbundle .hg/strip-backup/*-widen.hg
358 $ hg unbundle .hg/strip-backup/*-widen.hg
354 adding changesets
359 adding changesets
355 adding manifests
360 adding manifests
356 adding file changes
361 adding file changes
357 added 3 changesets with 2 changes to 1 files
362 added 3 changesets with 2 changes to 1 files
358 new changesets *:* (glob)
363 new changesets *:* (glob)
359 (run 'hg update' to get a working copy)
364 (run 'hg update' to get a working copy)
360 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
365 $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n"
361 2: local
366 2: local
362 ...1: add d10/f
367 ...1: add d10/f
363 0: add d0/f
368 0: add d0/f
364 $ hg bookmarks
369 $ hg bookmarks
365 * bookmark 2:* (glob)
370 * bookmark 2:* (glob)
General Comments 0
You need to be logged in to leave comments. Login now