comparison tests/test-stablesort.t @ 2081:010a8af416a0

discovery: adds a function doing revnum independant sorting The function is doing a topological sort without depending on revision number. This make the sort independent of the repository and suitable for discovery.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Thu, 09 Mar 2017 19:18:11 -0800
parents
children e38156312410
comparison
equal deleted inserted replaced
2080:b26a1f061ac8 2081:010a8af416a0
1 Test for stable ordering capabilities
2 =====================================
3
4 $ . $TESTDIR/testlib/pythonpath.sh
5
6 $ cat << EOF >> $HGRCPATH
7 > [extensions]
8 > hgext3rd.evolve =
9 > [ui]
10 > logtemplate = "{rev} {node|short} {desc} {tags}\n"
11 > [alias]
12 > showsort = debugstablesort --template="{node|short}\n"
13 > EOF
14
15
16
17 $ checktopo () {
18 > seen='null';
19 > for node in `hg showsort --rev "$1"`; do
20 > echo "=== checking $node ===";
21 > hg log --rev "($seen) and $node::";
22 > seen="${seen}+${node}";
23 > done;
24 > }
25
26 Basic tests
27 ===========
28 (no criss cross merge)
29
30 Smoke tests
31 -----------
32
33 Starts with a "simple case"
34
35 $ hg init repo_A
36 $ cd repo_A
37 $ hg debugbuilddag '
38 > ..:g # 2 nodes, tagged "g"
39 > <2.:h # another node base one -2 -> 0, tagged "h"
40 > *1/2:m # merge -1 and -2 (1, 2), tagged "m"
41 > <2+2:i # 2 nodes based on -2, tag head as "i"
42 > .:c # 1 node tagged "c"
43 > <m+3:a # 3 nodes base on the "m" tag
44 > <2.:b # 1 node based on -2; tagged "b"
45 > <m+2:d # 2 nodes from "m" tagged "d"
46 > <2.:e # 1 node based on -2, tagged "e"
47 > <m+1:f # 1 node based on "m" tagged "f"
48 > <i/f # merge "i" and "f"
49 > '
50 $ hg log -G
51 o 15 1d8d22637c2d r15 tip
52 |\
53 | o 14 43227190fef8 r14 f
54 | |
55 | | o 13 b4594d867745 r13 e
56 | | |
57 | | | o 12 e46a4836065c r12 d
58 | | |/
59 | | o 11 bab5d5bf48bd r11
60 | |/
61 | | o 10 ff43616e5d0f r10 b
62 | | |
63 | | | o 9 dcbb326fdec2 r9 a
64 | | |/
65 | | o 8 d62d843c9a01 r8
66 | | |
67 | | o 7 e7d9710d9fc6 r7
68 | |/
69 +---o 6 2702dd0c91e7 r6 c
70 | |
71 o | 5 f0f3ef9a6cd5 r5 i
72 | |
73 o | 4 4c748ffd1a46 r4
74 | |
75 | o 3 2b6d669947cd r3 m
76 |/|
77 o | 2 fa942426a6fd r2 h
78 | |
79 | o 1 66f7d451a68b r1 g
80 |/
81 o 0 1ea73414a91b r0
82
83 $ hg showsort --rev 'all()' --traceback
84 1ea73414a91b
85 66f7d451a68b
86 fa942426a6fd
87 2b6d669947cd
88 43227190fef8
89 bab5d5bf48bd
90 b4594d867745
91 e46a4836065c
92 e7d9710d9fc6
93 d62d843c9a01
94 dcbb326fdec2
95 ff43616e5d0f
96 4c748ffd1a46
97 f0f3ef9a6cd5
98 1d8d22637c2d
99 2702dd0c91e7
100
101 Verify the topological order
102 ----------------------------
103
104 Check we we did not issued a node before on ancestor
105
106 output of log should be empty
107
108 $ checktopo 'all()'
109 === checking 1ea73414a91b ===
110 === checking 66f7d451a68b ===
111 === checking fa942426a6fd ===
112 === checking 2b6d669947cd ===
113 === checking 43227190fef8 ===
114 === checking bab5d5bf48bd ===
115 === checking b4594d867745 ===
116 === checking e46a4836065c ===
117 === checking e7d9710d9fc6 ===
118 === checking d62d843c9a01 ===
119 === checking dcbb326fdec2 ===
120 === checking ff43616e5d0f ===
121 === checking 4c748ffd1a46 ===
122 === checking f0f3ef9a6cd5 ===
123 === checking 1d8d22637c2d ===
124 === checking 2702dd0c91e7 ===
125
126 Check stability
127 ===============
128
129 have repo with changesets in orders
130
131 $ cd ..
132 $ hg -R repo_A log -G > A.log
133 $ hg clone repo_A repo_B --rev 5
134 adding changesets
135 adding manifests
136 adding file changes
137 added 4 changesets with 0 changes to 0 files
138 updating to branch default
139 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
140 $ hg -R repo_B pull --rev 13
141 pulling from $TESTTMP/repo_A
142 searching for changes
143 adding changesets
144 adding manifests
145 adding file changes
146 added 4 changesets with 0 changes to 0 files (+1 heads)
147 (run 'hg heads' to see heads, 'hg merge' to merge)
148 $ hg -R repo_B pull --rev 14
149 pulling from $TESTTMP/repo_A
150 searching for changes
151 adding changesets
152 adding manifests
153 adding file changes
154 added 1 changesets with 0 changes to 0 files (+1 heads)
155 (run 'hg heads .' to see heads, 'hg merge' to merge)
156 $ hg -R repo_B pull
157 pulling from $TESTTMP/repo_A
158 searching for changes
159 adding changesets
160 adding manifests
161 adding file changes
162 added 7 changesets with 0 changes to 0 files (+3 heads)
163 (run 'hg heads .' to see heads, 'hg merge' to merge)
164 $ hg -R repo_B log -G
165 o 15 1d8d22637c2d r15 tip
166 |\
167 | | o 14 e46a4836065c r12
168 | | |
169 | | | o 13 ff43616e5d0f r10
170 | | | |
171 | | | | o 12 dcbb326fdec2 r9
172 | | | |/
173 | | | o 11 d62d843c9a01 r8
174 | | | |
175 | | | o 10 e7d9710d9fc6 r7
176 | | | |
177 +-------o 9 2702dd0c91e7 r6
178 | | | |
179 | o---+ 8 43227190fef8 r14
180 | / /
181 | +---o 7 b4594d867745 r13
182 | | |
183 | o | 6 bab5d5bf48bd r11
184 | |/
185 | o 5 2b6d669947cd r3
186 | |\
187 | | o 4 66f7d451a68b r1
188 | | |
189 @ | | 3 f0f3ef9a6cd5 r5
190 | | |
191 o | | 2 4c748ffd1a46 r4
192 |/ /
193 o / 1 fa942426a6fd r2
194 |/
195 o 0 1ea73414a91b r0
196
197 $ hg -R repo_B log -G > B.log
198
199 $ hg clone repo_A repo_C --rev 10
200 adding changesets
201 adding manifests
202 adding file changes
203 added 7 changesets with 0 changes to 0 files
204 updating to branch default
205 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
206 $ hg -R repo_C pull --rev 12
207 pulling from $TESTTMP/repo_A
208 searching for changes
209 adding changesets
210 adding manifests
211 adding file changes
212 added 2 changesets with 0 changes to 0 files (+1 heads)
213 (run 'hg heads' to see heads, 'hg merge' to merge)
214 $ hg -R repo_C pull --rev 15
215 pulling from $TESTTMP/repo_A
216 searching for changes
217 adding changesets
218 adding manifests
219 adding file changes
220 added 4 changesets with 0 changes to 0 files (+1 heads)
221 (run 'hg heads .' to see heads, 'hg merge' to merge)
222 $ hg -R repo_C pull
223 pulling from $TESTTMP/repo_A
224 searching for changes
225 adding changesets
226 adding manifests
227 adding file changes
228 added 3 changesets with 0 changes to 0 files (+3 heads)
229 (run 'hg heads .' to see heads, 'hg merge' to merge)
230 $ hg -R repo_C log -G
231 o 15 b4594d867745 r13 tip
232 |
233 | o 14 dcbb326fdec2 r9
234 | |
235 | | o 13 2702dd0c91e7 r6
236 | | |
237 | | | o 12 1d8d22637c2d r15
238 | | |/|
239 | | | o 11 43227190fef8 r14
240 | | | |
241 | | o | 10 f0f3ef9a6cd5 r5
242 | | | |
243 | | o | 9 4c748ffd1a46 r4
244 | | | |
245 +-------o 8 e46a4836065c r12
246 | | | |
247 o-----+ 7 bab5d5bf48bd r11
248 / / /
249 +-----@ 6 ff43616e5d0f r10
250 | | |
251 o | | 5 d62d843c9a01 r8
252 | | |
253 o---+ 4 e7d9710d9fc6 r7
254 / /
255 | o 3 2b6d669947cd r3
256 |/|
257 o | 2 fa942426a6fd r2
258 | |
259 | o 1 66f7d451a68b r1
260 |/
261 o 0 1ea73414a91b r0
262
263 $ hg -R repo_C log -G > C.log
264
265 $ hg clone repo_A repo_D --rev 2
266 adding changesets
267 adding manifests
268 adding file changes
269 added 2 changesets with 0 changes to 0 files
270 updating to branch default
271 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
272 $ hg -R repo_D pull --rev 10
273 pulling from $TESTTMP/repo_A
274 searching for changes
275 adding changesets
276 adding manifests
277 adding file changes
278 added 5 changesets with 0 changes to 0 files
279 (run 'hg update' to get a working copy)
280 $ hg -R repo_D pull --rev 15
281 pulling from $TESTTMP/repo_A
282 searching for changes
283 adding changesets
284 adding manifests
285 adding file changes
286 added 4 changesets with 0 changes to 0 files (+1 heads)
287 (run 'hg heads' to see heads, 'hg merge' to merge)
288 $ hg -R repo_D pull
289 pulling from $TESTTMP/repo_A
290 searching for changes
291 adding changesets
292 adding manifests
293 adding file changes
294 added 5 changesets with 0 changes to 0 files (+4 heads)
295 (run 'hg heads .' to see heads, 'hg merge' to merge)
296 $ hg -R repo_D log -G
297 o 15 b4594d867745 r13 tip
298 |
299 | o 14 e46a4836065c r12
300 |/
301 o 13 bab5d5bf48bd r11
302 |
303 | o 12 dcbb326fdec2 r9
304 | |
305 | | o 11 2702dd0c91e7 r6
306 | | |
307 | | | o 10 1d8d22637c2d r15
308 | | |/|
309 +-----o 9 43227190fef8 r14
310 | | |
311 | | o 8 f0f3ef9a6cd5 r5
312 | | |
313 | | o 7 4c748ffd1a46 r4
314 | | |
315 | +---o 6 ff43616e5d0f r10
316 | | |
317 | o | 5 d62d843c9a01 r8
318 | | |
319 | o | 4 e7d9710d9fc6 r7
320 |/ /
321 o | 3 2b6d669947cd r3
322 |\|
323 o | 2 66f7d451a68b r1
324 | |
325 | @ 1 fa942426a6fd r2
326 |/
327 o 0 1ea73414a91b r0
328
329 $ hg -R repo_D log -G > D.log
330
331 check the log output are different
332
333 $ python "$RUNTESTDIR/md5sum.py" *.log
334 55919ebc9c02f28070cf3255b1690f8c A.log
335 c6244b76a60d0707767dc71780e544f3 B.log
336 4d8b08b8c50ecbdd2460a62e5852d84d C.log
337 0f327003593b50b9591bea8ee28acb81 D.log
338
339 bug stable ordering should be identical
340 ---------------------------------------
341
342 $ repos="A B C D "
343
344 for 'all()'
345
346 $ for x in $repos; do
347 > echo $x
348 > hg -R repo_$x showsort --rev 'all()' > ${x}.all.order;
349 > done
350 A
351 B
352 C
353 D
354
355 $ python "$RUNTESTDIR/md5sum.py" *.all.order
356 0c6b2e6f15249c0359b0f93e28c5bd1c A.all.order
357 0c6b2e6f15249c0359b0f93e28c5bd1c B.all.order
358 0c6b2e6f15249c0359b0f93e28c5bd1c C.all.order
359 0c6b2e6f15249c0359b0f93e28c5bd1c D.all.order
360
361 one specific head
362
363 $ for x in $repos; do
364 > hg -R repo_$x showsort --rev 'b4594d867745' > ${x}.b4594d867745.order;
365 > done
366
367 $ python "$RUNTESTDIR/md5sum.py" *.b4594d867745.order
368 5c40900a22008f24eab8dfe2f30ad79f A.b4594d867745.order
369 5c40900a22008f24eab8dfe2f30ad79f B.b4594d867745.order
370 5c40900a22008f24eab8dfe2f30ad79f C.b4594d867745.order
371 5c40900a22008f24eab8dfe2f30ad79f D.b4594d867745.order
372
373 one secific heads, that is a merge
374
375 $ for x in $repos; do
376 > hg -R repo_$x showsort --rev '1d8d22637c2d' > ${x}.1d8d22637c2d.order;
377 > done
378
379 $ python "$RUNTESTDIR/md5sum.py" *.1d8d22637c2d.order
380 77dc20a6f86db9103df8edaae9ad2754 A.1d8d22637c2d.order
381 77dc20a6f86db9103df8edaae9ad2754 B.1d8d22637c2d.order
382 77dc20a6f86db9103df8edaae9ad2754 C.1d8d22637c2d.order
383 77dc20a6f86db9103df8edaae9ad2754 D.1d8d22637c2d.order
384
385 changeset that are not heads
386
387 $ for x in $repos; do
388 > hg -R repo_$x showsort --rev 'e7d9710d9fc6+43227190fef8' > ${x}.non-heads.order;
389 > done
390
391 $ python "$RUNTESTDIR/md5sum.py" *.non-heads.order
392 94e0ea8cdade135dabde4ec5e9954329 A.non-heads.order
393 94e0ea8cdade135dabde4ec5e9954329 B.non-heads.order
394 94e0ea8cdade135dabde4ec5e9954329 C.non-heads.order
395 94e0ea8cdade135dabde4ec5e9954329 D.non-heads.order
396
397 Check with different subset
398
399 $ hg clone repo_A repo_E --rev "43227190fef8"
400 adding changesets
401 adding manifests
402 adding file changes
403 added 5 changesets with 0 changes to 0 files
404 updating to branch default
405 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
406 $ hg -R repo_E pull --rev e7d9710d9fc6
407 pulling from $TESTTMP/repo_A
408 searching for changes
409 adding changesets
410 adding manifests
411 adding file changes
412 added 1 changesets with 0 changes to 0 files (+1 heads)
413 (run 'hg heads' to see heads, 'hg merge' to merge)
414
415 $ hg clone repo_A repo_F --rev "1d8d22637c2d"
416 adding changesets
417 adding manifests
418 adding file changes
419 added 8 changesets with 0 changes to 0 files
420 updating to branch default
421 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
422 $ hg -R repo_F pull --rev d62d843c9a01
423 pulling from $TESTTMP/repo_A
424 searching for changes
425 adding changesets
426 adding manifests
427 adding file changes
428 added 2 changesets with 0 changes to 0 files (+1 heads)
429 (run 'hg heads' to see heads, 'hg merge' to merge)
430
431 $ hg clone repo_A repo_G --rev "e7d9710d9fc6"
432 adding changesets
433 adding manifests
434 adding file changes
435 added 5 changesets with 0 changes to 0 files
436 updating to branch default
437 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
438 $ hg -R repo_G pull --rev 43227190fef8
439 pulling from $TESTTMP/repo_A
440 searching for changes
441 adding changesets
442 adding manifests
443 adding file changes
444 added 1 changesets with 0 changes to 0 files (+1 heads)
445 (run 'hg heads' to see heads, 'hg merge' to merge)
446 $ hg -R repo_G pull --rev 2702dd0c91e7
447 pulling from $TESTTMP/repo_A
448 searching for changes
449 adding changesets
450 adding manifests
451 adding file changes
452 added 3 changesets with 0 changes to 0 files (+1 heads)
453 (run 'hg heads .' to see heads, 'hg merge' to merge)
454
455 $ for x in E F G; do
456 > hg -R repo_$x showsort --rev 'e7d9710d9fc6+43227190fef8' > ${x}.non-heads.order;
457 > done
458
459 $ python "$RUNTESTDIR/md5sum.py" *.non-heads.order
460 94e0ea8cdade135dabde4ec5e9954329 A.non-heads.order
461 94e0ea8cdade135dabde4ec5e9954329 B.non-heads.order
462 94e0ea8cdade135dabde4ec5e9954329 C.non-heads.order
463 94e0ea8cdade135dabde4ec5e9954329 D.non-heads.order
464 94e0ea8cdade135dabde4ec5e9954329 E.non-heads.order
465 94e0ea8cdade135dabde4ec5e9954329 F.non-heads.order
466 94e0ea8cdade135dabde4ec5e9954329 G.non-heads.order
467
468 Multiple recursions
469 ===================
470
471 $ cat << EOF >> random_rev.py
472 > import random
473 > import sys
474 >
475 > loop = int(sys.argv[1])
476 > var = int(sys.argv[2])
477 > for x in range(loop):
478 > print(x + random.randint(0, var))
479 > EOF
480
481 $ hg init recursion_A
482 $ cd recursion_A
483 $ hg debugbuilddag '
484 > .:base
485 > +3:A
486 > <base.:B
487 > +2/A:C
488 > <A+2:D
489 > <B./D:E
490 > +3:F
491 > <C+3/E
492 > +2
493 > '
494 $ hg log -G
495 o 20 160a7a0adbf4 r20 tip
496 |
497 o 19 1c645e73dbc6 r19
498 |
499 o 18 0496f0a6a143 r18
500 |\
501 | o 17 d64d500024d1 r17
502 | |
503 | o 16 4dbf739dd63f r16
504 | |
505 | o 15 9fff0871d230 r15
506 | |
507 | | o 14 4bbfc6078919 r14 F
508 | | |
509 | | o 13 013b27f11536 r13
510 | | |
511 +---o 12 a66b68853635 r12
512 | |
513 o | 11 001194dd78d5 r11 E
514 |\ \
515 | o | 10 6ee532b68cfa r10
516 | | |
517 o | | 9 529dfc5bb875 r9 D
518 | | |
519 o | | 8 abf57d94268b r8
520 | | |
521 +---o 7 5f18015f9110 r7 C
522 | | |
523 | | o 6 a2f58e9c1e56 r6
524 | | |
525 | | o 5 3a367db1fabc r5
526 | |/
527 | o 4 e7bd5218ca15 r4 B
528 | |
529 o | 3 2dc09a01254d r3 A
530 | |
531 o | 2 01241442b3c2 r2
532 | |
533 o | 1 66f7d451a68b r1
534 |/
535 o 0 1ea73414a91b r0 base
536
537 $ hg showsort --rev 'all()'
538 1ea73414a91b
539 66f7d451a68b
540 01241442b3c2
541 2dc09a01254d
542 abf57d94268b
543 529dfc5bb875
544 e7bd5218ca15
545 3a367db1fabc
546 a2f58e9c1e56
547 5f18015f9110
548 9fff0871d230
549 4dbf739dd63f
550 d64d500024d1
551 6ee532b68cfa
552 001194dd78d5
553 0496f0a6a143
554 1c645e73dbc6
555 160a7a0adbf4
556 a66b68853635
557 013b27f11536
558 4bbfc6078919
559 $ checktopo 'all()'
560 === checking 1ea73414a91b ===
561 === checking 66f7d451a68b ===
562 === checking 01241442b3c2 ===
563 === checking 2dc09a01254d ===
564 === checking abf57d94268b ===
565 === checking 529dfc5bb875 ===
566 === checking e7bd5218ca15 ===
567 === checking 3a367db1fabc ===
568 === checking a2f58e9c1e56 ===
569 === checking 5f18015f9110 ===
570 === checking 9fff0871d230 ===
571 === checking 4dbf739dd63f ===
572 === checking d64d500024d1 ===
573 === checking 6ee532b68cfa ===
574 === checking 001194dd78d5 ===
575 === checking 0496f0a6a143 ===
576 === checking 1c645e73dbc6 ===
577 === checking 160a7a0adbf4 ===
578 === checking a66b68853635 ===
579 === checking 013b27f11536 ===
580 === checking 4bbfc6078919 ===
581 $ hg showsort --rev 'all()' > ../multiple.source.order
582 $ hg log -r tip
583 20 160a7a0adbf4 r20 tip
584 $ cd ..
585
586 $ hg clone recursion_A recursion_random --rev 0
587 adding changesets
588 adding manifests
589 adding file changes
590 added 1 changesets with 0 changes to 0 files
591 updating to branch default
592 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
593 $ cd recursion_random
594 $ for x in `python ../random_rev.py 15 5`; do
595 > # using python to benefit from the random seed
596 > hg pull -r $x --quiet
597 > done;
598 $ hg pull --quiet
599 $ hg showsort --rev 'all()' > ../multiple.random.order
600 $ python "$RUNTESTDIR/md5sum.py" ../multiple.*.order
601 6ff802a0a5f0a3ddd82b25f860238fbd ../multiple.random.order
602 6ff802a0a5f0a3ddd82b25f860238fbd ../multiple.source.order
603 $ hg showsort --rev 'all()'
604 1ea73414a91b
605 66f7d451a68b
606 01241442b3c2
607 2dc09a01254d
608 abf57d94268b
609 529dfc5bb875
610 e7bd5218ca15
611 3a367db1fabc
612 a2f58e9c1e56
613 5f18015f9110
614 9fff0871d230
615 4dbf739dd63f
616 d64d500024d1
617 6ee532b68cfa
618 001194dd78d5
619 0496f0a6a143
620 1c645e73dbc6
621 160a7a0adbf4
622 a66b68853635
623 013b27f11536
624 4bbfc6078919
625 $ cd ..
626
627 Check criss cross merge
628 =======================
629
630 $ hg init crisscross_A
631 $ cd crisscross_A
632 $ hg debugbuilddag '
633 > ...:base # create some base
634 > # criss cross #1: simple
635 > +3:AbaseA # "A" branch for CC "A"
636 > <base+2:AbaseB # "B" branch for CC "B"
637 > <AbaseA/AbaseB:AmergeA
638 > <AbaseB/AbaseA:AmergeB
639 > <AmergeA/AmergeB:Afinal
640 > # criss cross #2:multiple closes ones
641 > .:BbaseA
642 > <AmergeB:BbaseB
643 > <BbaseA/BbaseB:BmergeA
644 > <BbaseB/BbaseA:BmergeB
645 > <BmergeA/BmergeB:BmergeC
646 > <BmergeB/BmergeA:BmergeD
647 > <BmergeC/BmergeD:Bfinal
648 > # criss cross #2:many branches
649 > <Bfinal.:CbaseA
650 > <Bfinal+2:CbaseB
651 > <Bfinal.:CbaseC
652 > <Bfinal+5:CbaseD
653 > <Bfinal.:CbaseE
654 > <CbaseA/CbaseB+7:CmergeA
655 > <CbaseA/CbaseC:CmergeB
656 > <CbaseA/CbaseD.:CmergeC
657 > <CbaseA/CbaseE:CmergeD
658 > <CbaseB/CbaseA+2:CmergeE
659 > <CbaseB/CbaseC:CmergeF
660 > <CbaseB/CbaseD.:CmergeG
661 > <CbaseB/CbaseE:CmergeH
662 > <CbaseC/CbaseA.:CmergeI
663 > <CbaseC/CbaseB:CmergeJ
664 > <CbaseC/CbaseD+5:CmergeK
665 > <CbaseC/CbaseE+2:CmergeL
666 > <CbaseD/CbaseA:CmergeM
667 > <CbaseD/CbaseB...:CmergeN
668 > <CbaseD/CbaseC:CmergeO
669 > <CbaseD/CbaseE:CmergeP
670 > <CbaseE/CbaseA:CmergeQ
671 > <CbaseE/CbaseB..:CmergeR
672 > <CbaseE/CbaseC.:CmergeS
673 > <CbaseE/CbaseD:CmergeT
674 > <CmergeA/CmergeG:CmergeWA
675 > <CmergeB/CmergeF:CmergeWB
676 > <CmergeC/CmergeE:CmergeWC
677 > <CmergeD/CmergeH:CmergeWD
678 > <CmergeT/CmergeI:CmergeWE
679 > <CmergeS/CmergeJ:CmergeWF
680 > <CmergeR/CmergeK:CmergeWG
681 > <CmergeQ/CmergeL:CmergeWH
682 > <CmergeP/CmergeM:CmergeWI
683 > <CmergeO/CmergeN:CmergeWJ
684 > <CmergeO/CmergeN:CmergeWK
685 > <CmergeWA/CmergeWG:CmergeXA
686 > <CmergeWB/CmergeWH:CmergeXB
687 > <CmergeWC/CmergeWI:CmergeXC
688 > <CmergeWD/CmergeWJ:CmergeXD
689 > <CmergeWE/CmergeWK:CmergeXE
690 > <CmergeWF/CmergeWA:CmergeXF
691 > <CmergeXA/CmergeXF:CmergeYA
692 > <CmergeXB/CmergeXE:CmergeYB
693 > <CmergeXC/CmergeXD:CmergeYC
694 > <CmergeYA/CmergeYB:CmergeZA
695 > <CmergeYC/CmergeYB:CmergeZB
696 > <CmergeZA/CmergeZB:Cfinal
697 > '
698 $ hg log -G
699 o 94 01f771406cab r94 Cfinal tip
700 |\
701 | o 93 84d6ec6a8e21 r93 CmergeZB
702 | |\
703 o | | 92 721ba7c5f4ff r92 CmergeZA
704 |\| |
705 | | o 91 8ae32c3ed670 r91 CmergeYC
706 | | |\
707 | o \ \ 90 8b79544bb56d r90 CmergeYB
708 | |\ \ \
709 o \ \ \ \ 89 041e1188f5f1 r89 CmergeYA
710 |\ \ \ \ \
711 | o \ \ \ \ 88 2472d042ec95 r88 CmergeXF
712 | |\ \ \ \ \
713 | | | | o \ \ 87 c7d3029bf731 r87 CmergeXE
714 | | | | |\ \ \
715 | | | | | | | o 86 469c700e9ed8 r86 CmergeXD
716 | | | | | | | |\
717 | | | | | | o \ \ 85 28be96b80dc1 r85 CmergeXC
718 | | | | | | |\ \ \
719 | | | o \ \ \ \ \ \ 84 dbde319d43a3 r84 CmergeXB
720 | | | |\ \ \ \ \ \ \
721 o | | | | | | | | | | 83 b3cf98c3d587 r83 CmergeXA
722 |\| | | | | | | | | |
723 | | | | | | o | | | | 82 1da228afcf06 r82 CmergeWK
724 | | | | | | |\ \ \ \ \
725 | | | | | | +-+-------o 81 0bab31f71a21 r81 CmergeWJ
726 | | | | | | | | | | |
727 | | | | | | | | | o | 80 cd345198cf12 r80 CmergeWI
728 | | | | | | | | | |\ \
729 | | | | o \ \ \ \ \ \ \ 79 82238c0bc950 r79 CmergeWH
730 | | | | |\ \ \ \ \ \ \ \
731 o \ \ \ \ \ \ \ \ \ \ \ \ 78 89a0fe204177 r78 CmergeWG
732 |\ \ \ \ \ \ \ \ \ \ \ \ \
733 | | | o \ \ \ \ \ \ \ \ \ \ 77 97d19fc5236f r77 CmergeWF
734 | | | |\ \ \ \ \ \ \ \ \ \ \
735 | | | | | | | | o \ \ \ \ \ \ 76 37ad3ab0cddf r76 CmergeWE
736 | | | | | | | | |\ \ \ \ \ \ \
737 | | | | | | | | | | | | | | | o 75 790cdfecd168 r75 CmergeWD
738 | | | | | | | | | | | | | | | |\
739 | | | | | | | | | | | | o \ \ \ \ 74 698970a2480b r74 CmergeWC
740 | | | | | | | | | | | | |\ \ \ \ \
741 | | | | | o \ \ \ \ \ \ \ \ \ \ \ \ 73 31d7b43cc321 r73 CmergeWB
742 | | | | | |\ \ \ \ \ \ \ \ \ \ \ \ \
743 | | o \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 72 eed373b0090d r72 CmergeWA
744 | | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
745 | | | | | | | | | | | o \ \ \ \ \ \ \ \ 71 4f3b41956174 r71 CmergeT
746 | | | | | | | | | | | |\ \ \ \ \ \ \ \ \
747 | | | | | o | | | | | | | | | | | | | | | 70 c3c7fa726f88 r70 CmergeS
748 | | | | | | | | | | | | | | | | | | | | |
749 | | | | | o-------------+ | | | | | | | | 69 d917f77a6439 r69
750 | | | | | | | | | | | | | | | | | | | | |
751 | o | | | | | | | | | | | | | | | | | | | 68 fac9e582edd1 r68 CmergeR
752 | | | | | | | | | | | | | | | | | | | | |
753 | o | | | | | | | | | | | | | | | | | | | 67 e4cfd6264623 r67
754 | | | | | | | | | | | | | | | | | | | | |
755 | o---------------------+ | | | | | | | | 66 d99e0f7dad5b r66
756 | | | | | | | | | | | | | | | | | | | | |
757 | | | | | | | | | o-----+ | | | | | | | | 65 c713eae2d31f r65 CmergeQ
758 | | | | | | | | | | | | | | | | | | | | |
759 | | | | | | | | | | | +-+-----------o | | 64 b33fd5ad4c0c r64 CmergeP
760 | | | | | | | | | | | | | | | | | | / /
761 | | | | | +-----------+-----o | | | / / 63 bf6593f7e073 r63 CmergeO
762 | | | | | | | | | | | | | | / / / / /
763 | | | | | | | | | | | | | o | | | | | 62 3871506da61e r62 CmergeN
764 | | | | | | | | | | | | | | | | | | |
765 | | | | | | | | | | | | | o | | | | | 61 c84da74cf586 r61
766 | | | | | | | | | | | | | | | | | | |
767 | | | | | | | | | | | | | o | | | | | 60 5eec91b12a58 r60
768 | | | | | | | | | | | | | | | | | | |
769 | +-------------------+---o | | | | | 59 0484d39906c8 r59
770 | | | | | | | | | | | | | / / / / /
771 | | | | | | | | | +---+-------o / / 58 29141354a762 r58 CmergeM
772 | | | | | | | | | | | | | | | / /
773 | | | | | | | | o | | | | | | | | 57 e7135b665740 r57 CmergeL
774 | | | | | | | | | | | | | | | | |
775 | | | | | | | | o | | | | | | | | 56 c7c1497fc270 r56
776 | | | | | | | | | | | | | | | | |
777 | | | | | +-----o-------+ | | | | 55 76151e8066e1 r55
778 | | | | | | | | / / / / / / / /
779 o | | | | | | | | | | | | | | | 54 9a67238ad1c4 r54 CmergeK
780 | | | | | | | | | | | | | | | |
781 o | | | | | | | | | | | | | | | 53 c37e7cd9f2bd r53
782 | | | | | | | | | | | | | | | |
783 o | | | | | | | | | | | | | | | 52 0d153e3ad632 r52
784 | | | | | | | | | | | | | | | |
785 o | | | | | | | | | | | | | | | 51 97ac964e34b7 r51
786 | | | | | | | | | | | | | | | |
787 o | | | | | | | | | | | | | | | 50 900dd066a072 r50
788 | | | | | | | | | | | | | | | |
789 o---------+---------+ | | | | | 49 673f5499c8c2 r49
790 / / / / / / / / / / / / / / /
791 +-----o / / / / / / / / / / / 48 8ecb28746ec4 r48 CmergeJ
792 | | | |/ / / / / / / / / / /
793 | | | | | | | o | | | | | | 47 d6c9e2d27f14 r47 CmergeI
794 | | | | | | | | | | | | | |
795 | | | +-------o | | | | | | 46 bfcfd9a61e84 r46
796 | | | | | | |/ / / / / / /
797 +---------------+-------o 45 40553f55397e r45 CmergeH
798 | | | | | | | | | | | |
799 | | o | | | | | | | | | 44 d94da36be176 r44 CmergeG
800 | | | | | | | | | | | |
801 +---o---------+ | | | | 43 4b39f229a0ce r43
802 | | / / / / / / / / /
803 +---+---o / / / / / / 42 43fc0b77ff07 r42 CmergeF
804 | | | | / / / / / /
805 | | | | | | | | o | 41 88eace5ce682 r41 CmergeE
806 | | | | | | | | | |
807 | | | | | | | | o | 40 d928b4e8a515 r40
808 | | | | | | | | | |
809 +-------+-------o | 39 88714f4125cb r39
810 | | | | | | | | /
811 | | | | +---+---o 38 e3e6738c56ce r38 CmergeD
812 | | | | | | | |
813 | | | | | | | o 37 32b41ca704e1 r37 CmergeC
814 | | | | | | | |
815 | | | | +-+---o 36 01e29e20ea3f r36
816 | | | | | | |
817 | | | o | | | 35 1f4a19f83a29 r35 CmergeB
818 | | |/|/ / /
819 | o | | | | 34 722d1b8b8942 r34 CmergeA
820 | | | | | |
821 | o | | | | 33 47c836a1f13e r33
822 | | | | | |
823 | o | | | | 32 2ea3fbf151b5 r32
824 | | | | | |
825 | o | | | | 31 0c3f2ba59eb7 r31
826 | | | | | |
827 | o | | | | 30 f3441cd3e664 r30
828 | | | | | |
829 | o | | | | 29 b9c3aa92fba5 r29
830 | | | | | |
831 | o | | | | 28 3bdb00d5c818 r28
832 | | | | | |
833 | o---+ | | 27 2bd677d0f13a r27
834 |/ / / / /
835 | | | | o 26 de05b9c29ec7 r26 CbaseE
836 | | | | |
837 | | | o | 25 ad46a4a0fc10 r25 CbaseD
838 | | | | |
839 | | | o | 24 a457569c5306 r24
840 | | | | |
841 | | | o | 23 f2bdd828a3aa r23
842 | | | | |
843 | | | o | 22 5ce588c2b7c5 r22
844 | | | | |
845 | | | o | 21 17b6e6bac221 r21
846 | | | |/
847 | o---+ 20 b115c694654e r20 CbaseC
848 | / /
849 o | | 19 884936b34999 r19 CbaseB
850 | | |
851 o---+ 18 9729470d9329 r18
852 / /
853 o / 17 4f5078f7da8a r17 CbaseA
854 |/
855 o 16 3e1560705803 r16 Bfinal
856 |\
857 | o 15 55bf3fdb634f r15 BmergeD
858 | |\
859 o---+ 14 39bab1cb1cbe r14 BmergeC
860 |/ /
861 | o 13 f7c6e7bfbcd0 r13 BmergeB
862 | |\
863 o---+ 12 26f59ee8b1d7 r12 BmergeA
864 |/ /
865 | o 11 3e2da24aee59 r11 BbaseA
866 | |
867 | o 10 5ba9a53052ed r10 Afinal
868 |/|
869 o | 9 07c648efceeb r9 AmergeB BbaseB
870 |\ \
871 +---o 8 c81423bf5a24 r8 AmergeA
872 | |/
873 | o 7 65eb34ffc3a8 r7 AbaseB
874 | |
875 | o 6 0c1445abb33d r6
876 | |
877 o | 5 c8d03c1b5e94 r5 AbaseA
878 | |
879 o | 4 bebd167eb94d r4
880 | |
881 o | 3 2dc09a01254d r3
882 |/
883 o 2 01241442b3c2 r2 base
884 |
885 o 1 66f7d451a68b r1
886 |
887 o 0 1ea73414a91b r0
888
889
890 Basic check
891 -----------
892
893 $ hg showsort --rev 'Afinal'
894 1ea73414a91b
895 66f7d451a68b
896 01241442b3c2
897 0c1445abb33d
898 65eb34ffc3a8
899 2dc09a01254d
900 bebd167eb94d
901 c8d03c1b5e94
902 07c648efceeb
903 c81423bf5a24
904 5ba9a53052ed
905 $ checktopo Afinal
906 === checking 1ea73414a91b ===
907 === checking 66f7d451a68b ===
908 === checking 01241442b3c2 ===
909 === checking 0c1445abb33d ===
910 === checking 65eb34ffc3a8 ===
911 === checking 2dc09a01254d ===
912 === checking bebd167eb94d ===
913 === checking c8d03c1b5e94 ===
914 === checking 07c648efceeb ===
915 === checking c81423bf5a24 ===
916 === checking 5ba9a53052ed ===
917 $ hg showsort --rev 'AmergeA'
918 1ea73414a91b
919 66f7d451a68b
920 01241442b3c2
921 0c1445abb33d
922 65eb34ffc3a8
923 2dc09a01254d
924 bebd167eb94d
925 c8d03c1b5e94
926 c81423bf5a24
927 $ checktopo AmergeA
928 === checking 1ea73414a91b ===
929 === checking 66f7d451a68b ===
930 === checking 01241442b3c2 ===
931 === checking 0c1445abb33d ===
932 === checking 65eb34ffc3a8 ===
933 === checking 2dc09a01254d ===
934 === checking bebd167eb94d ===
935 === checking c8d03c1b5e94 ===
936 === checking c81423bf5a24 ===
937 $ hg showsort --rev 'AmergeB'
938 1ea73414a91b
939 66f7d451a68b
940 01241442b3c2
941 0c1445abb33d
942 65eb34ffc3a8
943 2dc09a01254d
944 bebd167eb94d
945 c8d03c1b5e94
946 07c648efceeb
947 $ checktopo AmergeB
948 === checking 1ea73414a91b ===
949 === checking 66f7d451a68b ===
950 === checking 01241442b3c2 ===
951 === checking 0c1445abb33d ===
952 === checking 65eb34ffc3a8 ===
953 === checking 2dc09a01254d ===
954 === checking bebd167eb94d ===
955 === checking c8d03c1b5e94 ===
956 === checking 07c648efceeb ===
957
958 close criss cross
959 $ hg showsort --rev 'Bfinal'
960 1ea73414a91b
961 66f7d451a68b
962 01241442b3c2
963 0c1445abb33d
964 65eb34ffc3a8
965 2dc09a01254d
966 bebd167eb94d
967 c8d03c1b5e94
968 07c648efceeb
969 c81423bf5a24
970 5ba9a53052ed
971 3e2da24aee59
972 26f59ee8b1d7
973 f7c6e7bfbcd0
974 39bab1cb1cbe
975 55bf3fdb634f
976 3e1560705803
977 $ checktopo Bfinal
978 === checking 1ea73414a91b ===
979 === checking 66f7d451a68b ===
980 === checking 01241442b3c2 ===
981 === checking 0c1445abb33d ===
982 === checking 65eb34ffc3a8 ===
983 === checking 2dc09a01254d ===
984 === checking bebd167eb94d ===
985 === checking c8d03c1b5e94 ===
986 === checking 07c648efceeb ===
987 === checking c81423bf5a24 ===
988 === checking 5ba9a53052ed ===
989 === checking 3e2da24aee59 ===
990 === checking 26f59ee8b1d7 ===
991 === checking f7c6e7bfbcd0 ===
992 === checking 39bab1cb1cbe ===
993 === checking 55bf3fdb634f ===
994 === checking 3e1560705803 ===
995
996 many branches criss cross
997
998 $ hg showsort --rev 'Cfinal'
999 1ea73414a91b
1000 66f7d451a68b
1001 01241442b3c2
1002 0c1445abb33d
1003 65eb34ffc3a8
1004 2dc09a01254d
1005 bebd167eb94d
1006 c8d03c1b5e94
1007 07c648efceeb
1008 c81423bf5a24
1009 5ba9a53052ed
1010 3e2da24aee59
1011 26f59ee8b1d7
1012 f7c6e7bfbcd0
1013 39bab1cb1cbe
1014 55bf3fdb634f
1015 3e1560705803
1016 17b6e6bac221
1017 5ce588c2b7c5
1018 f2bdd828a3aa
1019 a457569c5306
1020 ad46a4a0fc10
1021 4f5078f7da8a
1022 01e29e20ea3f
1023 32b41ca704e1
1024 29141354a762
1025 9729470d9329
1026 884936b34999
1027 0484d39906c8
1028 5eec91b12a58
1029 c84da74cf586
1030 3871506da61e
1031 2bd677d0f13a
1032 3bdb00d5c818
1033 b9c3aa92fba5
1034 f3441cd3e664
1035 0c3f2ba59eb7
1036 2ea3fbf151b5
1037 47c836a1f13e
1038 722d1b8b8942
1039 4b39f229a0ce
1040 d94da36be176
1041 eed373b0090d
1042 88714f4125cb
1043 d928b4e8a515
1044 88eace5ce682
1045 698970a2480b
1046 b115c694654e
1047 1f4a19f83a29
1048 43fc0b77ff07
1049 31d7b43cc321
1050 673f5499c8c2
1051 900dd066a072
1052 97ac964e34b7
1053 0d153e3ad632
1054 c37e7cd9f2bd
1055 9a67238ad1c4
1056 8ecb28746ec4
1057 bf6593f7e073
1058 0bab31f71a21
1059 1da228afcf06
1060 bfcfd9a61e84
1061 d6c9e2d27f14
1062 de05b9c29ec7
1063 40553f55397e
1064 4f3b41956174
1065 37ad3ab0cddf
1066 c7d3029bf731
1067 76151e8066e1
1068 c7c1497fc270
1069 e7135b665740
1070 b33fd5ad4c0c
1071 cd345198cf12
1072 28be96b80dc1
1073 c713eae2d31f
1074 82238c0bc950
1075 dbde319d43a3
1076 8b79544bb56d
1077 d917f77a6439
1078 c3c7fa726f88
1079 97d19fc5236f
1080 2472d042ec95
1081 d99e0f7dad5b
1082 e4cfd6264623
1083 fac9e582edd1
1084 89a0fe204177
1085 b3cf98c3d587
1086 041e1188f5f1
1087 721ba7c5f4ff
1088 e3e6738c56ce
1089 790cdfecd168
1090 469c700e9ed8
1091 8ae32c3ed670
1092 84d6ec6a8e21
1093 01f771406cab
1094 $ checktopo Cfinal
1095 === checking 1ea73414a91b ===
1096 === checking 66f7d451a68b ===
1097 === checking 01241442b3c2 ===
1098 === checking 0c1445abb33d ===
1099 === checking 65eb34ffc3a8 ===
1100 === checking 2dc09a01254d ===
1101 === checking bebd167eb94d ===
1102 === checking c8d03c1b5e94 ===
1103 === checking 07c648efceeb ===
1104 === checking c81423bf5a24 ===
1105 === checking 5ba9a53052ed ===
1106 === checking 3e2da24aee59 ===
1107 === checking 26f59ee8b1d7 ===
1108 === checking f7c6e7bfbcd0 ===
1109 === checking 39bab1cb1cbe ===
1110 === checking 55bf3fdb634f ===
1111 === checking 3e1560705803 ===
1112 === checking 17b6e6bac221 ===
1113 === checking 5ce588c2b7c5 ===
1114 === checking f2bdd828a3aa ===
1115 === checking a457569c5306 ===
1116 === checking ad46a4a0fc10 ===
1117 === checking 4f5078f7da8a ===
1118 === checking 01e29e20ea3f ===
1119 === checking 32b41ca704e1 ===
1120 === checking 29141354a762 ===
1121 === checking 9729470d9329 ===
1122 === checking 884936b34999 ===
1123 === checking 0484d39906c8 ===
1124 === checking 5eec91b12a58 ===
1125 === checking c84da74cf586 ===
1126 === checking 3871506da61e ===
1127 === checking 2bd677d0f13a ===
1128 === checking 3bdb00d5c818 ===
1129 === checking b9c3aa92fba5 ===
1130 === checking f3441cd3e664 ===
1131 === checking 0c3f2ba59eb7 ===
1132 === checking 2ea3fbf151b5 ===
1133 === checking 47c836a1f13e ===
1134 === checking 722d1b8b8942 ===
1135 === checking 4b39f229a0ce ===
1136 === checking d94da36be176 ===
1137 === checking eed373b0090d ===
1138 === checking 88714f4125cb ===
1139 === checking d928b4e8a515 ===
1140 === checking 88eace5ce682 ===
1141 === checking 698970a2480b ===
1142 === checking b115c694654e ===
1143 === checking 1f4a19f83a29 ===
1144 === checking 43fc0b77ff07 ===
1145 === checking 31d7b43cc321 ===
1146 === checking 673f5499c8c2 ===
1147 === checking 900dd066a072 ===
1148 === checking 97ac964e34b7 ===
1149 === checking 0d153e3ad632 ===
1150 === checking c37e7cd9f2bd ===
1151 === checking 9a67238ad1c4 ===
1152 === checking 8ecb28746ec4 ===
1153 === checking bf6593f7e073 ===
1154 === checking 0bab31f71a21 ===
1155 === checking 1da228afcf06 ===
1156 === checking bfcfd9a61e84 ===
1157 === checking d6c9e2d27f14 ===
1158 === checking de05b9c29ec7 ===
1159 === checking 40553f55397e ===
1160 === checking 4f3b41956174 ===
1161 === checking 37ad3ab0cddf ===
1162 === checking c7d3029bf731 ===
1163 === checking 76151e8066e1 ===
1164 === checking c7c1497fc270 ===
1165 === checking e7135b665740 ===
1166 === checking b33fd5ad4c0c ===
1167 === checking cd345198cf12 ===
1168 === checking 28be96b80dc1 ===
1169 === checking c713eae2d31f ===
1170 === checking 82238c0bc950 ===
1171 === checking dbde319d43a3 ===
1172 === checking 8b79544bb56d ===
1173 === checking d917f77a6439 ===
1174 === checking c3c7fa726f88 ===
1175 === checking 97d19fc5236f ===
1176 === checking 2472d042ec95 ===
1177 === checking d99e0f7dad5b ===
1178 === checking e4cfd6264623 ===
1179 === checking fac9e582edd1 ===
1180 === checking 89a0fe204177 ===
1181 === checking b3cf98c3d587 ===
1182 === checking 041e1188f5f1 ===
1183 === checking 721ba7c5f4ff ===
1184 === checking e3e6738c56ce ===
1185 === checking 790cdfecd168 ===
1186 === checking 469c700e9ed8 ===
1187 === checking 8ae32c3ed670 ===
1188 === checking 84d6ec6a8e21 ===
1189 === checking 01f771406cab ===
1190
1191 Test stability of this mess
1192 ---------------------------
1193
1194 $ hg log -r tip
1195 94 01f771406cab r94 Cfinal tip
1196 $ hg showsort --rev 'all()' > ../crisscross.source.order
1197 $ cd ..
1198
1199 $ hg clone crisscross_A crisscross_random --rev 0
1200 adding changesets
1201 adding manifests
1202 adding file changes
1203 added 1 changesets with 0 changes to 0 files
1204 updating to branch default
1205 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1206 $ cd crisscross_random
1207 $ for x in `python ../random_rev.py 50 44`; do
1208 > # using python to benefit from the random seed
1209 > hg pull -r $x --quiet
1210 > done;
1211 $ hg pull --quiet
1212
1213 $ hg showsort --rev 'all()' > ../crisscross.random.order
1214 $ python "$RUNTESTDIR/md5sum.py" ../crisscross.*.order
1215 d9aab0d1907d5cf64d205a8b9036e959 ../crisscross.random.order
1216 d9aab0d1907d5cf64d205a8b9036e959 ../crisscross.source.order
1217 $ diff -u ../crisscross.*.order
1218 $ hg showsort --rev 'all()'
1219 1ea73414a91b
1220 66f7d451a68b
1221 01241442b3c2
1222 0c1445abb33d
1223 65eb34ffc3a8
1224 2dc09a01254d
1225 bebd167eb94d
1226 c8d03c1b5e94
1227 07c648efceeb
1228 c81423bf5a24
1229 5ba9a53052ed
1230 3e2da24aee59
1231 26f59ee8b1d7
1232 f7c6e7bfbcd0
1233 39bab1cb1cbe
1234 55bf3fdb634f
1235 3e1560705803
1236 17b6e6bac221
1237 5ce588c2b7c5
1238 f2bdd828a3aa
1239 a457569c5306
1240 ad46a4a0fc10
1241 4f5078f7da8a
1242 01e29e20ea3f
1243 32b41ca704e1
1244 29141354a762
1245 9729470d9329
1246 884936b34999
1247 0484d39906c8
1248 5eec91b12a58
1249 c84da74cf586
1250 3871506da61e
1251 2bd677d0f13a
1252 3bdb00d5c818
1253 b9c3aa92fba5
1254 f3441cd3e664
1255 0c3f2ba59eb7
1256 2ea3fbf151b5
1257 47c836a1f13e
1258 722d1b8b8942
1259 4b39f229a0ce
1260 d94da36be176
1261 eed373b0090d
1262 88714f4125cb
1263 d928b4e8a515
1264 88eace5ce682
1265 698970a2480b
1266 b115c694654e
1267 1f4a19f83a29
1268 43fc0b77ff07
1269 31d7b43cc321
1270 673f5499c8c2
1271 900dd066a072
1272 97ac964e34b7
1273 0d153e3ad632
1274 c37e7cd9f2bd
1275 9a67238ad1c4
1276 8ecb28746ec4
1277 bf6593f7e073
1278 0bab31f71a21
1279 1da228afcf06
1280 bfcfd9a61e84
1281 d6c9e2d27f14
1282 de05b9c29ec7
1283 40553f55397e
1284 4f3b41956174
1285 37ad3ab0cddf
1286 c7d3029bf731
1287 76151e8066e1
1288 c7c1497fc270
1289 e7135b665740
1290 b33fd5ad4c0c
1291 cd345198cf12
1292 28be96b80dc1
1293 c713eae2d31f
1294 82238c0bc950
1295 dbde319d43a3
1296 8b79544bb56d
1297 d917f77a6439
1298 c3c7fa726f88
1299 97d19fc5236f
1300 2472d042ec95
1301 d99e0f7dad5b
1302 e4cfd6264623
1303 fac9e582edd1
1304 89a0fe204177
1305 b3cf98c3d587
1306 041e1188f5f1
1307 721ba7c5f4ff
1308 e3e6738c56ce
1309 790cdfecd168
1310 469c700e9ed8
1311 8ae32c3ed670
1312 84d6ec6a8e21
1313 01f771406cab
1314
1315
1316 Test behavior with oedipus merges
1317 =================================
1318
1319 $ hg init recursion_oedipus
1320 $ cd recursion_oedipus
1321 $ echo base > base
1322 $ hg add base
1323 $ hg ci -m base
1324 $ hg branch foo
1325 marked working directory as branch foo
1326 (branches are permanent and global, did you want a bookmark?)
1327 $ echo foo1 > foo1
1328 $ hg add foo1
1329 $ hg ci -m foo1
1330 $ echo foo2 > foo2
1331 $ hg add foo2
1332 $ hg ci -m foo2
1333 $ hg up default
1334 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
1335 $ hg merge foo
1336 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1337 (branch merge, don't forget to commit)
1338 $ hg ci -m oedipus_merge
1339 $ echo default1 > default1
1340 $ hg add default1
1341 $ hg ci -m default1
1342 $ hg log -G
1343 @ 4 7f2454f6b04f default1 tip
1344 |
1345 o 3 ed776db7ed63 oedipus_merge
1346 |\
1347 | o 2 0dedbcd995b6 foo2
1348 | |
1349 | o 1 47da0f2c25e2 foo1
1350 |/
1351 o 0 d20a80d4def3 base
1352
1353 $ hg showsort --rev '.'
1354 d20a80d4def3
1355 47da0f2c25e2
1356 0dedbcd995b6
1357 ed776db7ed63
1358 7f2454f6b04f