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