Mercurial > hg
comparison tests/test-rebase-inmemory.t @ 45555:feffeb18d412
rebase: teach in-memory rebase to not restart with on-disk rebase on conflict
When in-memory rebase runs into conflicts, it redoes the whole rebase
operation. This patch teaches it to instead discard just the current
`overlayworkingctx` and redo that node on disk.
I've tested this by enabling in-memory rebase by default and checking
that there are no unexpected differences after this patch.
The next step is to make it so that `hg rebase --continue` can use
in-memory merge.
Differential Revision: https://phab.mercurial-scm.org/D9076
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 18 Sep 2020 15:03:06 -0700 |
parents | 1f5c548f15e5 |
children | f90a5c211251 39e2cf7cb120 |
comparison
equal
deleted
inserted
replaced
45554:abad925af2ef | 45555:feffeb18d412 |
---|---|
413 starting dry-run rebase; repository will not be changed | 413 starting dry-run rebase; repository will not be changed |
414 rebasing 2:177f92b77385 "c" | 414 rebasing 2:177f92b77385 "c" |
415 rebasing 3:055a42cdd887 "d" | 415 rebasing 3:055a42cdd887 "d" |
416 rebasing 4:e860deea161a "e" | 416 rebasing 4:e860deea161a "e" |
417 merging e | 417 merging e |
418 transaction abort! | |
419 rollback completed | |
420 hit a merge conflict | 418 hit a merge conflict |
421 [1] | 419 [1] |
422 $ hg diff | 420 $ hg diff |
423 $ hg status | 421 $ hg status |
424 $ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n" | 422 $ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n" |
461 $ hg rebase -s 2 -d 7 | 459 $ hg rebase -s 2 -d 7 |
462 rebasing 2:177f92b77385 "c" | 460 rebasing 2:177f92b77385 "c" |
463 rebasing 3:055a42cdd887 "d" | 461 rebasing 3:055a42cdd887 "d" |
464 rebasing 4:e860deea161a "e" | 462 rebasing 4:e860deea161a "e" |
465 merging e | 463 merging e |
466 transaction abort! | 464 hit merge conflicts; rebasing that commit again in the working copy |
467 rollback completed | |
468 hit merge conflicts; re-running rebase without in-memory merge | |
469 rebasing 2:177f92b77385 "c" | |
470 rebasing 3:055a42cdd887 "d" | |
471 rebasing 4:e860deea161a "e" | |
472 merging e | 465 merging e |
473 warning: conflicts while merging e! (edit, then use 'hg resolve --mark') | 466 warning: conflicts while merging e! (edit, then use 'hg resolve --mark') |
474 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | 467 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') |
475 [1] | 468 [1] |
476 $ hg rebase --abort | 469 $ hg rebase --abort |
485 $ hg rebase -s 2 -d 7 | 478 $ hg rebase -s 2 -d 7 |
486 rebasing 2:177f92b77385 "c" | 479 rebasing 2:177f92b77385 "c" |
487 rebasing 3:055a42cdd887 "d" | 480 rebasing 3:055a42cdd887 "d" |
488 rebasing 4:e860deea161a "e" | 481 rebasing 4:e860deea161a "e" |
489 merging e | 482 merging e |
483 hit merge conflicts; rebasing that commit again in the working copy | |
490 transaction abort! | 484 transaction abort! |
491 rollback completed | 485 rollback completed |
492 hit merge conflicts; re-running rebase without in-memory merge | |
493 abort: uncommitted changes | 486 abort: uncommitted changes |
494 [255] | 487 [255] |
495 $ cat a | 488 $ cat a |
496 dirty | 489 dirty |
497 | 490 |
857 created new head | 850 created new head |
858 | 851 |
859 $ hg rebase -r . -d 1 --config ui.merge=internal:merge3 | 852 $ hg rebase -r . -d 1 --config ui.merge=internal:merge3 |
860 rebasing 2:fb62b706688e "add b to foo" (tip) | 853 rebasing 2:fb62b706688e "add b to foo" (tip) |
861 merging foo | 854 merging foo |
862 hit merge conflicts; re-running rebase without in-memory merge | 855 hit merge conflicts; rebasing that commit again in the working copy |
863 rebasing 2:fb62b706688e "add b to foo" (tip) | |
864 merging foo | 856 merging foo |
865 warning: conflicts while merging foo! (edit, then use 'hg resolve --mark') | 857 warning: conflicts while merging foo! (edit, then use 'hg resolve --mark') |
866 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | 858 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') |
867 [1] | 859 [1] |
868 | 860 |
891 o 0: r0 | 883 o 0: r0 |
892 r0 | 884 r0 |
893 $ hg rebase -r 2 -d 1 -t:merge3 | 885 $ hg rebase -r 2 -d 1 -t:merge3 |
894 rebasing 2:b4d249fbf8dd "bye from foo" | 886 rebasing 2:b4d249fbf8dd "bye from foo" |
895 merging foo | 887 merging foo |
896 hit merge conflicts; re-running rebase without in-memory merge | 888 hit merge conflicts; rebasing that commit again in the working copy |
897 rebasing 2:b4d249fbf8dd "bye from foo" | |
898 merging foo | 889 merging foo |
899 warning: conflicts while merging foo! (edit, then use 'hg resolve --mark') | 890 warning: conflicts while merging foo! (edit, then use 'hg resolve --mark') |
900 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | 891 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') |
901 [1] | 892 [1] |
902 $ hg rebase -r 3 -d 1 -t:merge3 | 893 $ hg rebase -r 3 -d 1 -t:merge3 |