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