comparison tests/test-rebase-obsolete.t @ 35709:1a09dad8b85a

evolution: report new unstable changesets This adds a transaction summary callback that reports the number of new orphan, content-divergent and phase-divergent changesets. The code for reporting it is based on the code from the evolve extension, but simplified a bit. It simply counts the numbers for each kind of instability before and after the transaction. That's obviously not very efficient, but it's easy to reason about, so I'm doing this as a first step that can make us quite confident about the test case changes. We can optimize it later and make sure that the tests are not affected. The code has been used in the evolve extension for a long time and has apparently been sufficiently fast, so it doesn't seem like a pressing issue. Unlike the evolve extension's version of this report, this version applies to all commands (or all transactions run as part of any command, to be exact). Differential Revision: https://phab.mercurial-scm.org/D1867
author Martin von Zweigbergk <martinvonz@google.com>
date Sun, 14 Jan 2018 23:59:17 -0800
parents 7336ac5e786e
children 35a0f6f31eef
comparison
equal deleted inserted replaced
35708:03e921942163 35709:1a09dad8b85a
180 180
181 More complex case where part of the rebase set were already rebased 181 More complex case where part of the rebase set were already rebased
182 182
183 $ hg rebase --rev 'desc(D)' --dest 'desc(H)' 183 $ hg rebase --rev 'desc(D)' --dest 'desc(H)'
184 rebasing 9:08483444fef9 "D" 184 rebasing 9:08483444fef9 "D"
185 1 new orphan changesets
185 $ hg debugobsolete 186 $ hg debugobsolete
186 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 {cd010b8cd998f3981a5a8115f94f8da4ab506089} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'rebase', 'user': 'test'} 187 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 {cd010b8cd998f3981a5a8115f94f8da4ab506089} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'rebase', 'user': 'test'}
187 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 5ae4c968c6aca831df823664e706c9d4aa34473d 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '4', 'operation': 'rebase', 'user': 'test'} 188 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 5ae4c968c6aca831df823664e706c9d4aa34473d 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '4', 'operation': 'rebase', 'user': 'test'}
188 32af7686d403cf45b5d95f2d70cebea587ac806a 0 {5fddd98957c8a54a4d436dfe1da9d87f21a1b97b} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'rebase', 'user': 'test'} 189 32af7686d403cf45b5d95f2d70cebea587ac806a 0 {5fddd98957c8a54a4d436dfe1da9d87f21a1b97b} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'rebase', 'user': 'test'}
189 08483444fef91d6224f6655ee586a65d263ad34c 4596109a6a4328c398bde3a4a3b6737cfade3003 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '4', 'operation': 'rebase', 'user': 'test'} 190 08483444fef91d6224f6655ee586a65d263ad34c 4596109a6a4328c398bde3a4a3b6737cfade3003 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '4', 'operation': 'rebase', 'user': 'test'}
458 459
459 $ hg log -r 'children(8)' 460 $ hg log -r 'children(8)'
460 9:cf44d2f5a9f4 D (no-eol) 461 9:cf44d2f5a9f4 D (no-eol)
461 $ hg rebase -r 8 462 $ hg rebase -r 8
462 rebasing 8:e273c5e7d2d2 "C" 463 rebasing 8:e273c5e7d2d2 "C"
464 1 new orphan changesets
463 $ hg log -G 465 $ hg log -G
464 o 11:0d8f238b634c C 466 o 11:0d8f238b634c C
465 | 467 |
466 o 10:7c6027df6a99 B 468 o 10:7c6027df6a99 B
467 | 469 |
580 582
581 $ hg rebase --dest 6 --rev '((desc(H) + desc(D))::) - desc(M)' 583 $ hg rebase --dest 6 --rev '((desc(H) + desc(D))::) - desc(M)'
582 rebasing 3:32af7686d403 "D" 584 rebasing 3:32af7686d403 "D"
583 rebasing 7:02de42196ebe "H" 585 rebasing 7:02de42196ebe "H"
584 rebasing 9:4bde274eefcf "I" (tip) 586 rebasing 9:4bde274eefcf "I" (tip)
587 1 new orphan changesets
585 $ hg log -G 588 $ hg log -G
586 @ 12:acd174b7ab39 I 589 @ 12:acd174b7ab39 I
587 | 590 |
588 o 11:6c11a6218c97 H 591 o 11:6c11a6218c97 H
589 | 592 |
614 updating to a hidden changeset 4bde274eefcf 617 updating to a hidden changeset 4bde274eefcf
615 3 files updated, 0 files merged, 1 files removed, 0 files unresolved 618 3 files updated, 0 files merged, 1 files removed, 0 files unresolved
616 $ echo J > J 619 $ echo J > J
617 $ hg add J 620 $ hg add J
618 $ hg commit -m J 621 $ hg commit -m J
622 1 new orphan changesets
619 $ hg debugobsolete `hg log --rev . -T '{node}'` 623 $ hg debugobsolete `hg log --rev . -T '{node}'`
620 obsoleted 1 changesets 624 obsoleted 1 changesets
621 625
622 $ hg rebase --rev .~1::. --dest 'max(desc(D))' --traceback --config experimental.rebaseskipobsolete=off 626 $ hg rebase --rev .~1::. --dest 'max(desc(D))' --traceback --config experimental.rebaseskipobsolete=off
623 rebasing 9:4bde274eefcf "I" 627 rebasing 9:4bde274eefcf "I"
624 rebasing 13:06edfc82198f "J" (tip) 628 rebasing 13:06edfc82198f "J" (tip)
629 2 new content-divergent changesets
625 $ hg log -G 630 $ hg log -G
626 @ 15:5ae8a643467b J 631 @ 15:5ae8a643467b J
627 | 632 |
628 * 14:9ad579b4a5de I 633 * 14:9ad579b4a5de I
629 | 634 |
654 $ hg up 14 -C 659 $ hg up 14 -C
655 0 files updated, 0 files merged, 1 files removed, 0 files unresolved 660 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
656 $ echo "K" > K 661 $ echo "K" > K
657 $ hg add K 662 $ hg add K
658 $ hg commit --amend -m "K" 663 $ hg commit --amend -m "K"
664 1 new orphan changesets
659 $ echo "L" > L 665 $ echo "L" > L
660 $ hg add L 666 $ hg add L
661 $ hg commit -m "L" 667 $ hg commit -m "L"
662 $ hg up '.^' 668 $ hg up '.^'
663 0 files updated, 0 files merged, 1 files removed, 0 files unresolved 669 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
664 $ echo "M" > M 670 $ echo "M" > M
665 $ hg add M 671 $ hg add M
666 $ hg commit --amend -m "M" 672 $ hg commit --amend -m "M"
673 1 new orphan changesets
667 $ hg log -G 674 $ hg log -G
668 @ 18:bfaedf8eb73b M 675 @ 18:bfaedf8eb73b M
669 | 676 |
670 | * 17:97219452e4bd L 677 | * 17:97219452e4bd L
671 | | 678 | |
700 o 0:cd010b8cd998 A 707 o 0:cd010b8cd998 A
701 708
702 $ hg rebase -s 14 -d 17 --config experimental.rebaseskipobsolete=True 709 $ hg rebase -s 14 -d 17 --config experimental.rebaseskipobsolete=True
703 note: not rebasing 14:9ad579b4a5de "I", already in destination as 16:fc37a630c901 "K" 710 note: not rebasing 14:9ad579b4a5de "I", already in destination as 16:fc37a630c901 "K"
704 rebasing 15:5ae8a643467b "J" 711 rebasing 15:5ae8a643467b "J"
712 1 new orphan changesets
705 713
706 $ cd .. 714 $ cd ..
707 715
708 Skip obsolete changeset even with multiple hops 716 Skip obsolete changeset even with multiple hops
709 ----------------------------------------------- 717 -----------------------------------------------
730 updating to a hidden changeset a8b11f55fb19 738 updating to a hidden changeset a8b11f55fb19
731 0 files updated, 0 files merged, 0 files removed, 0 files unresolved 739 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
732 $ echo C > C 740 $ echo C > C
733 $ hg add C 741 $ hg add C
734 $ hg commit -m C 742 $ hg commit -m C
743 1 new orphan changesets
735 $ hg log -G 744 $ hg log -G
736 @ 4:212cb178bcbb C 745 @ 4:212cb178bcbb C
737 | 746 |
738 | o 3:261e70097290 B2 747 | o 3:261e70097290 B2
739 | | 748 | |
754 updating to a hidden changeset a8b11f55fb19 763 updating to a hidden changeset a8b11f55fb19
755 0 files updated, 0 files merged, 1 files removed, 0 files unresolved 764 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
756 $ echo D > D 765 $ echo D > D
757 $ hg add D 766 $ hg add D
758 $ hg commit -m D 767 $ hg commit -m D
768 1 new orphan changesets
759 $ hg --hidden strip -r 'desc(B1)' 769 $ hg --hidden strip -r 'desc(B1)'
760 saved backup bundle to $TESTTMP/obsskip/.hg/strip-backup/86f6414ccda7-b1c452ee-backup.hg 770 saved backup bundle to $TESTTMP/obsskip/.hg/strip-backup/86f6414ccda7-b1c452ee-backup.hg
761 $ hg log -G 771 $ hg log -G
762 @ 5:1a79b7535141 D 772 @ 5:1a79b7535141 D
763 | 773 |
794 | 804 |
795 o 0:4a2df7238c3b A 805 o 0:4a2df7238c3b A
796 806
797 $ hg debugobsolete `hg log -r 7 -T '{node}\n'` --config experimental.evolution=true 807 $ hg debugobsolete `hg log -r 7 -T '{node}\n'` --config experimental.evolution=true
798 obsoleted 1 changesets 808 obsoleted 1 changesets
809 1 new orphan changesets
799 $ hg rebase -d 6 -r "4::" 810 $ hg rebase -d 6 -r "4::"
800 rebasing 4:ff2c4d47b71d "C" 811 rebasing 4:ff2c4d47b71d "C"
801 note: not rebasing 7:360bbaa7d3ce "O", it has no successor 812 note: not rebasing 7:360bbaa7d3ce "O", it has no successor
802 rebasing 8:8d47583e023f "P" (tip) 813 rebasing 8:8d47583e023f "P" (tip)
803 814
869 updating to a hidden changeset 121d9e3bc4c6 880 updating to a hidden changeset 121d9e3bc4c6
870 0 files updated, 0 files merged, 1 files removed, 0 files unresolved 881 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
871 $ echo "bar" > foo 882 $ echo "bar" > foo
872 $ hg add foo 883 $ hg add foo
873 $ hg commit -m "bar foo" 884 $ hg commit -m "bar foo"
885 1 new orphan changesets
874 $ hg log -G 886 $ hg log -G
875 @ 14:73568ab6879d bar foo 887 @ 14:73568ab6879d bar foo
876 | 888 |
877 | o 13:77d874d096a2 10' 889 | o 13:77d874d096a2 10'
878 | | 890 | |
920 With experimental.evolution.allowdivergence=True, rebase can create divergence 932 With experimental.evolution.allowdivergence=True, rebase can create divergence
921 933
922 $ hg rebase -s 10 -d 12 --config experimental.evolution.allowdivergence=True 934 $ hg rebase -s 10 -d 12 --config experimental.evolution.allowdivergence=True
923 rebasing 10:121d9e3bc4c6 "P" 935 rebasing 10:121d9e3bc4c6 "P"
924 rebasing 14:73568ab6879d "bar foo" (tip) 936 rebasing 14:73568ab6879d "bar foo" (tip)
937 2 new content-divergent changesets
925 $ hg summary 938 $ hg summary
926 parent: 16:61bd55f69bc4 tip 939 parent: 16:61bd55f69bc4 tip
927 bar foo 940 bar foo
928 branch: default 941 branch: default
929 commit: (clean) 942 commit: (clean)
959 $ printf "dummy" > L 972 $ printf "dummy" > L
960 $ hg add L 973 $ hg add L
961 $ hg commit -m "dummy change" 974 $ hg commit -m "dummy change"
962 $ hg debugobsolete `hg log -r ".^" -T '{node}'` `hg log -r 18 -T '{node}'` --config experimental.evolution=true 975 $ hg debugobsolete `hg log -r ".^" -T '{node}'` `hg log -r 18 -T '{node}'` --config experimental.evolution=true
963 obsoleted 1 changesets 976 obsoleted 1 changesets
977 1 new orphan changesets
964 978
965 $ hg log -G -r 16:: 979 $ hg log -G -r 16::
966 @ 21:7bdc8a87673d dummy change 980 @ 21:7bdc8a87673d dummy change
967 | 981 |
968 x 20:8b31da3c4919 dummy change (rewritten as 18:601db7a18f51) 982 x 20:8b31da3c4919 dummy change (rewritten as 18:601db7a18f51)
1018 > | 1032 > |
1019 > x b 1033 > x b
1020 > \| 1034 > \|
1021 > a 1035 > a
1022 > EOF 1036 > EOF
1037 1 new orphan changesets
1023 $ hg log -G -r 'a':: 1038 $ hg log -G -r 'a'::
1024 * 7:1143e9adc121 f 1039 * 7:1143e9adc121 f
1025 | 1040 |
1026 | o 6:d60ebfa0f1cb e 1041 | o 6:d60ebfa0f1cb e
1027 | | 1042 | |
1085 [255] 1100 [255]
1086 $ hg rebase --config experimental.evolution.allowdivergence=true -r 'c'::'f' -d 'x' 1101 $ hg rebase --config experimental.evolution.allowdivergence=true -r 'c'::'f' -d 'x'
1087 rebasing 3:a82ac2b38757 "c" (c) 1102 rebasing 3:a82ac2b38757 "c" (c)
1088 rebasing 4:76be324c128b "d" (d) 1103 rebasing 4:76be324c128b "d" (d)
1089 rebasing 7:1143e9adc121 "f" (f tip) 1104 rebasing 7:1143e9adc121 "f" (f tip)
1105 1 new orphan changesets
1106 2 new content-divergent changesets
1090 $ hg log -G -r 'a':: -T instabilities 1107 $ hg log -G -r 'a':: -T instabilities
1091 o 10:e1744ea07510 f 1108 o 10:e1744ea07510 f
1092 | 1109 |
1093 * 9:e2b36ea9a0a0 d (content-divergent) 1110 * 9:e2b36ea9a0a0 d (content-divergent)
1094 | 1111 |
1116 1133
1117 $ hg rebase --config experimental.rebaseskipobsolete=false -r 'c'::'f' -d 'x' 1134 $ hg rebase --config experimental.rebaseskipobsolete=false -r 'c'::'f' -d 'x'
1118 rebasing 3:a82ac2b38757 "c" (c) 1135 rebasing 3:a82ac2b38757 "c" (c)
1119 rebasing 4:76be324c128b "d" (d) 1136 rebasing 4:76be324c128b "d" (d)
1120 rebasing 7:1143e9adc121 "f" (f tip) 1137 rebasing 7:1143e9adc121 "f" (f tip)
1138 1 new orphan changesets
1139 2 new content-divergent changesets
1121 1140
1122 $ hg strip -r 0: 1141 $ hg strip -r 0:
1123 1142
1124 Similar test on a more complex graph 1143 Similar test on a more complex graph
1125 1144
1134 > | 1153 > |
1135 > x b 1154 > x b
1136 > \| 1155 > \|
1137 > a 1156 > a
1138 > EOF 1157 > EOF
1158 1 new orphan changesets
1139 $ hg log -G -r 'a': 1159 $ hg log -G -r 'a':
1140 * 8:2876ce66c6eb g 1160 * 8:2876ce66c6eb g
1141 | 1161 |
1142 | o 7:3ffec603ab53 f 1162 | o 7:3ffec603ab53 f
1143 | | 1163 | |
1204 > /| 1224 > /|
1205 > E D B # replace: D -> B 1225 > E D B # replace: D -> B
1206 > \|/ 1226 > \|/
1207 > A 1227 > A
1208 > EOF 1228 > EOF
1229 1 new orphan changesets
1209 1230
1210 $ hg rebase -d B -s D 1231 $ hg rebase -d B -s D
1211 note: not rebasing 2:b18e25de2cf5 "D" (D), already in destination as 1:112478962961 "B" (B) 1232 note: not rebasing 2:b18e25de2cf5 "D" (D), already in destination as 1:112478962961 "B" (B)
1212 rebasing 4:66f1a38021c9 "F" (F tip) 1233 rebasing 4:66f1a38021c9 "F" (F tip)
1213 $ hg log -G 1234 $ hg log -G
1235 > /| 1256 > /|
1236 > E D B # replace: E -> B 1257 > E D B # replace: E -> B
1237 > \|/ 1258 > \|/
1238 > A 1259 > A
1239 > EOF 1260 > EOF
1261 1 new orphan changesets
1240 1262
1241 $ hg rebase -d B -s E 1263 $ hg rebase -d B -s E
1242 note: not rebasing 3:7fb047a69f22 "E" (E), already in destination as 1:112478962961 "B" (B) 1264 note: not rebasing 3:7fb047a69f22 "E" (E), already in destination as 1:112478962961 "B" (B)
1243 rebasing 4:66f1a38021c9 "F" (F tip) 1265 rebasing 4:66f1a38021c9 "F" (F tip)
1244 $ hg log -G 1266 $ hg log -G
1266 > /| | 1288 > /| |
1267 > E D B # replace: D -> B 1289 > E D B # replace: D -> B
1268 > \|/ 1290 > \|/
1269 > A 1291 > A
1270 > EOF 1292 > EOF
1293 1 new orphan changesets
1271 1294
1272 $ hg rebase -d C -s D 1295 $ hg rebase -d C -s D
1273 note: not rebasing 2:b18e25de2cf5 "D" (D), already in destination as 1:112478962961 "B" (B) 1296 note: not rebasing 2:b18e25de2cf5 "D" (D), already in destination as 1:112478962961 "B" (B)
1274 rebasing 5:66f1a38021c9 "F" (F tip) 1297 rebasing 5:66f1a38021c9 "F" (F tip)
1275 1298
1300 > /| | 1323 > /| |
1301 > E D B # replace: E -> B 1324 > E D B # replace: E -> B
1302 > \|/ 1325 > \|/
1303 > A 1326 > A
1304 > EOF 1327 > EOF
1328 1 new orphan changesets
1305 1329
1306 $ hg rebase -d C -s E 1330 $ hg rebase -d C -s E
1307 note: not rebasing 3:7fb047a69f22 "E" (E), already in destination as 1:112478962961 "B" (B) 1331 note: not rebasing 3:7fb047a69f22 "E" (E), already in destination as 1:112478962961 "B" (B)
1308 rebasing 5:66f1a38021c9 "F" (F tip) 1332 rebasing 5:66f1a38021c9 "F" (F tip)
1309 $ hg log -G 1333 $ hg log -G
1333 > /| | 1357 > /| |
1334 > E D B # replace: E -> B 1358 > E D B # replace: E -> B
1335 > \|/ 1359 > \|/
1336 > A 1360 > A
1337 > EOF 1361 > EOF
1362 1 new orphan changesets
1338 1363
1339 $ hg rebase -d C -b F 1364 $ hg rebase -d C -b F
1340 rebasing 2:b18e25de2cf5 "D" (D) 1365 rebasing 2:b18e25de2cf5 "D" (D)
1341 note: not rebasing 3:7fb047a69f22 "E" (E), already in destination as 1:112478962961 "B" (B) 1366 note: not rebasing 3:7fb047a69f22 "E" (E), already in destination as 1:112478962961 "B" (B)
1342 rebasing 5:66f1a38021c9 "F" (F tip) 1367 rebasing 5:66f1a38021c9 "F" (F tip)
1368 > /| | 1393 > /| |
1369 > E D B # replace: D -> B 1394 > E D B # replace: D -> B
1370 > \|/ 1395 > \|/
1371 > A 1396 > A
1372 > EOF 1397 > EOF
1398 1 new orphan changesets
1373 1399
1374 $ hg rebase -d C -b F 1400 $ hg rebase -d C -b F
1375 note: not rebasing 2:b18e25de2cf5 "D" (D), already in destination as 1:112478962961 "B" (B) 1401 note: not rebasing 2:b18e25de2cf5 "D" (D), already in destination as 1:112478962961 "B" (B)
1376 rebasing 3:7fb047a69f22 "E" (E) 1402 rebasing 3:7fb047a69f22 "E" (E)
1377 rebasing 5:66f1a38021c9 "F" (F tip) 1403 rebasing 5:66f1a38021c9 "F" (F tip)
1403 > /| /| # replace: A -> C 1429 > /| /| # replace: A -> C
1404 > A B C D # replace: B -> D 1430 > A B C D # replace: B -> D
1405 > | | 1431 > | |
1406 > X Y 1432 > X Y
1407 > EOS 1433 > EOS
1434 1 new orphan changesets
1408 $ hg rebase -r A+B+E -d F 1435 $ hg rebase -r A+B+E -d F
1409 note: not rebasing 4:a3d17304151f "A" (A), already in destination as 0:96cc3511f894 "C" (C) 1436 note: not rebasing 4:a3d17304151f "A" (A), already in destination as 0:96cc3511f894 "C" (C)
1410 note: not rebasing 5:b23a2cc00842 "B" (B), already in destination as 1:058c1e1fb10a "D" (D) 1437 note: not rebasing 5:b23a2cc00842 "B" (B), already in destination as 1:058c1e1fb10a "D" (D)
1411 rebasing 7:dac5d11c5a7d "E" (E tip) 1438 rebasing 7:dac5d11c5a7d "E" (E tip)
1412 abort: rebasing 7:dac5d11c5a7d will include unwanted changes from 3:59c792af609c, 5:b23a2cc00842 or 2:ba2b7fa7166d, 4:a3d17304151f 1439 abort: rebasing 7:dac5d11c5a7d will include unwanted changes from 3:59c792af609c, 5:b23a2cc00842 or 2:ba2b7fa7166d, 4:a3d17304151f
1421 $ hg debugdrawdag <<'EOS' 1448 $ hg debugdrawdag <<'EOS'
1422 > D Z 1449 > D Z
1423 > /| | # replace: A -> C 1450 > /| | # replace: A -> C
1424 > A B C # D/D = D 1451 > A B C # D/D = D
1425 > EOS 1452 > EOS
1453 1 new orphan changesets
1426 $ hg rebase -r A+B+D -d Z 1454 $ hg rebase -r A+B+D -d Z
1427 note: not rebasing 0:426bada5c675 "A" (A), already in destination as 2:96cc3511f894 "C" (C) 1455 note: not rebasing 0:426bada5c675 "A" (A), already in destination as 2:96cc3511f894 "C" (C)
1428 rebasing 1:fc2b737bb2e5 "B" (B) 1456 rebasing 1:fc2b737bb2e5 "B" (B)
1429 rebasing 3:b8ed089c80ad "D" (D) 1457 rebasing 3:b8ed089c80ad "D" (D)
1430 1458
1451 $ hg debugdrawdag <<'EOS' 1479 $ hg debugdrawdag <<'EOS'
1452 > D Z 1480 > D Z
1453 > /| | # replace: B -> C 1481 > /| | # replace: B -> C
1454 > A B C # D/D = D 1482 > A B C # D/D = D
1455 > EOS 1483 > EOS
1484 1 new orphan changesets
1456 $ hg rebase -r B+A+D -d Z 1485 $ hg rebase -r B+A+D -d Z
1457 rebasing 0:426bada5c675 "A" (A) 1486 rebasing 0:426bada5c675 "A" (A)
1458 note: not rebasing 1:fc2b737bb2e5 "B" (B), already in destination as 2:96cc3511f894 "C" (C) 1487 note: not rebasing 1:fc2b737bb2e5 "B" (B), already in destination as 2:96cc3511f894 "C" (C)
1459 rebasing 3:b8ed089c80ad "D" (D) 1488 rebasing 3:b8ed089c80ad "D" (D)
1460 1489
1528 $ hg update D1 -q 1557 $ hg update D1 -q
1529 $ hg bookmark book -i 1558 $ hg bookmark book -i
1530 $ hg rebase -r B+D1 -d E 1559 $ hg rebase -r B+D1 -d E
1531 rebasing 1:112478962961 "B" (B) 1560 rebasing 1:112478962961 "B" (B)
1532 note: not rebasing 5:15ecf15e0114 "D1" (book D1 tip), already in destination as 2:0807738e0be9 "D2" (D2) 1561 note: not rebasing 5:15ecf15e0114 "D1" (book D1 tip), already in destination as 2:0807738e0be9 "D2" (D2)
1562 1 new orphan changesets
1533 $ hg log -G -T '{desc} {bookmarks}' 1563 $ hg log -G -T '{desc} {bookmarks}'
1534 @ B book 1564 @ B book
1535 | 1565 |
1536 | x D1 1566 | x D1
1537 | | 1567 | |
1559 > | |\ 1589 > | |\
1560 > | B1 C 1590 > | B1 C
1561 > |/ 1591 > |/
1562 > A 1592 > A
1563 > EOS 1593 > EOS
1594 1 new orphan changesets
1564 1595
1565 $ eval `hg tags -T '{tag}={node}\n'` 1596 $ eval `hg tags -T '{tag}={node}\n'`
1566 $ rm .hg/localtags 1597 $ rm .hg/localtags
1567 1598
1568 $ hg rebase -r $D -d $E 1599 $ hg rebase -r $D -d $E