Mercurial > hg
comparison tests/test-rebase-obsolete.t @ 26349:92409f8dff5d
rebase: don't rebase obsolete commit whose successor is already rebased
This patch avoids unnecessary conflicts to resolve during rebase for the users
of changeset evolution.
This patch modifies rebase to skip obsolete commits if they are being rebased on
their successors.
It introduces a new rebase state 'revprecursor' for these revisions that are
being skipped and a new message to inform the user of what is happening.
This feature is gated behind the config flag experimental.rebaseskipobsolete
When an obsolete commit is skipped, the output is:
not rebasing 14:9ad579b4a5de "I", already in destination as 17:fc37a630c901 "K"
author | Laurent Charignon <lcharignon@fb.com> |
---|---|
date | Mon, 14 Sep 2015 17:31:48 -0700 |
parents | 8a544fb645bb |
children | b73eb98c0243 |
comparison
equal
deleted
inserted
replaced
26348:b80b2ee71a08 | 26349:92409f8dff5d |
---|---|
201 | | | 201 | | |
202 | o 4:9520eea781bc E | 202 | o 4:9520eea781bc E |
203 |/ | 203 |/ |
204 o 0:cd010b8cd998 A | 204 o 0:cd010b8cd998 A |
205 | 205 |
206 $ hg rebase --source 'desc(B)' --dest 'tip' | 206 $ hg rebase --source 'desc(B)' --dest 'tip' --config experimental.rebaseskipobsolete=True |
207 rebasing 8:8877864f1edb "B" | 207 rebasing 8:8877864f1edb "B" |
208 rebasing 9:08483444fef9 "D" | 208 note: not rebasing 9:08483444fef9 "D", already in destination as 11:4596109a6a43 "D" |
209 note: rebase of 9:08483444fef9 created no changes to commit | |
210 rebasing 10:5ae4c968c6ac "C" | 209 rebasing 10:5ae4c968c6ac "C" |
211 $ hg debugobsolete | 210 $ hg debugobsolete |
212 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 {cd010b8cd998f3981a5a8115f94f8da4ab506089} (*) {'user': 'test'} (glob) | 211 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 {cd010b8cd998f3981a5a8115f94f8da4ab506089} (*) {'user': 'test'} (glob) |
213 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 5ae4c968c6aca831df823664e706c9d4aa34473d 0 (*) {'user': 'test'} (glob) | 212 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 5ae4c968c6aca831df823664e706c9d4aa34473d 0 (*) {'user': 'test'} (glob) |
214 32af7686d403cf45b5d95f2d70cebea587ac806a 0 {5fddd98957c8a54a4d436dfe1da9d87f21a1b97b} (*) {'user': 'test'} (glob) | 213 32af7686d403cf45b5d95f2d70cebea587ac806a 0 {5fddd98957c8a54a4d436dfe1da9d87f21a1b97b} (*) {'user': 'test'} (glob) |
215 08483444fef91d6224f6655ee586a65d263ad34c 4596109a6a4328c398bde3a4a3b6737cfade3003 0 (*) {'user': 'test'} (glob) | 214 08483444fef91d6224f6655ee586a65d263ad34c 4596109a6a4328c398bde3a4a3b6737cfade3003 0 (*) {'user': 'test'} (glob) |
216 8877864f1edb05d0e07dc4ba77b67a80a7b86672 462a34d07e599b87ea08676a449373fe4e2e1347 0 (*) {'user': 'test'} (glob) | 215 8877864f1edb05d0e07dc4ba77b67a80a7b86672 462a34d07e599b87ea08676a449373fe4e2e1347 0 (*) {'user': 'test'} (glob) |
217 08483444fef91d6224f6655ee586a65d263ad34c 0 {8877864f1edb05d0e07dc4ba77b67a80a7b86672} (*) {'user': 'test'} (glob) | |
218 5ae4c968c6aca831df823664e706c9d4aa34473d 98f6af4ee9539e14da4465128f894c274900b6e5 0 (*) {'user': 'test'} (glob) | 216 5ae4c968c6aca831df823664e706c9d4aa34473d 98f6af4ee9539e14da4465128f894c274900b6e5 0 (*) {'user': 'test'} (glob) |
219 $ hg log --rev 'divergent()' | 217 $ hg log --rev 'divergent()' |
220 $ hg log -G | 218 $ hg log -G |
221 o 13:98f6af4ee953 C | 219 o 13:98f6af4ee953 C |
222 | | 220 | |
538 | | | 536 | | |
539 o | 1:42ccdea3bb16 B | 537 o | 1:42ccdea3bb16 B |
540 |/ | 538 |/ |
541 o 0:cd010b8cd998 A | 539 o 0:cd010b8cd998 A |
542 | 540 |
541 $ hg up 14 -C | |
542 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
543 $ echo "K" > K | |
544 $ hg add K | |
545 $ hg commit --amend -m "K" | |
546 $ echo "L" > L | |
547 $ hg add L | |
548 $ hg commit -m "L" | |
549 $ hg up '.^' | |
550 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
551 $ echo "M" > M | |
552 $ hg add M | |
553 $ hg commit --amend -m "M" | |
554 $ hg log -G | |
555 @ 20:bfaedf8eb73b M | |
556 | | |
557 | o 18:97219452e4bd L | |
558 | | | |
559 | x 17:fc37a630c901 K | |
560 |/ | |
561 | o 15:5ae8a643467b J | |
562 | | | |
563 | x 14:9ad579b4a5de I | |
564 |/ | |
565 | o 12:acd174b7ab39 I | |
566 | | | |
567 | o 11:6c11a6218c97 H | |
568 | | | |
569 o | 10:b5313c85b22e D | |
570 |/ | |
571 | o 8:53a6a128b2b7 M | |
572 | |\ | |
573 | | x 7:02de42196ebe H | |
574 | | | | |
575 o---+ 6:eea13746799a G | |
576 | | | | |
577 | | o 5:24b6387c8c8c F | |
578 | | | | |
579 o---+ 4:9520eea781bc E | |
580 / / | |
581 x | 3:32af7686d403 D | |
582 | | | |
583 o | 2:5fddd98957c8 C | |
584 | | | |
585 o | 1:42ccdea3bb16 B | |
586 |/ | |
587 o 0:cd010b8cd998 A | |
588 | |
589 $ hg rebase -s 14 -d 18 --config experimental.rebaseskipobsolete=True | |
590 note: not rebasing 14:9ad579b4a5de "I", already in destination as 17:fc37a630c901 "K" | |
591 rebasing 15:5ae8a643467b "J" | |
592 |