Mercurial > hg
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 |