test-rebase-scenario-global.t
984 lines
| 21.0 KiB
| text/troff
|
Tads3Lexer
/ tests / test-rebase-scenario-global.t
|
r12608 | $ cat >> $HGRCPATH <<EOF | ||
> [extensions] | ||||
> rebase= | ||||
|
r33055 | > drawdag=$TESTDIR/drawdag.py | ||
|
r12608 | > | ||
|
r15742 | > [phases] | ||
> publish=False | ||||
> | ||||
|
r12608 | > [alias] | ||
|
r35386 | > tglog = log -G --template "{rev}: {node|short} '{desc}' {branches}\n" | ||
|
r12608 | > EOF | ||
$ hg init a | ||||
$ cd a | ||||
|
r16350 | $ hg unbundle "$TESTDIR/bundles/rebase.hg" | ||
|
r14118 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
|
r14119 | added 8 changesets with 7 changes to 7 files (+2 heads) | ||
|
r39516 | new changesets cd010b8cd998:02de42196ebe (8 drafts) | ||
|
r14118 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg up tip | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r12608 | $ cd .. | ||
Rebasing | ||||
|
r14119 | D onto H - simple rebase: | ||
|
r28022 | (this also tests that editor is invoked if '--edit' is specified, and that we | ||
can abort or warn for colliding untracked files) | ||||
|
r12608 | |||
$ hg clone -q -u . a a1 | ||||
$ cd a1 | ||||
$ hg tglog | ||||
|
r35386 | @ 7: 02de42196ebe 'H' | ||
|
r12608 | | | ||
|
r35386 | | o 6: eea13746799a 'G' | ||
|
r14119 | |/| | ||
|
r35386 | o | 5: 24b6387c8c8c 'F' | ||
|
r14119 | | | | ||
|
r35386 | | o 4: 9520eea781bc 'E' | ||
|
r14119 | |/ | ||
|
r35386 | | o 3: 32af7686d403 'D' | ||
|
r12608 | | | | ||
|
r35386 | | o 2: 5fddd98957c8 'C' | ||
|
r14119 | | | | ||
|
r35386 | | o 1: 42ccdea3bb16 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r12608 | |||
|
r14119 | |||
|
r21410 | $ hg status --rev "3^1" --rev 3 | ||
A D | ||||
|
r28022 | $ echo collide > D | ||
$ HGEDITOR=cat hg rebase -s 3 -d 7 --edit --config merge.checkunknown=warn | ||||
|
r23517 | rebasing 3:32af7686d403 "D" | ||
|
r28022 | D: replacing untracked file | ||
|
r21410 | D | ||
HG: Enter commit message. Lines beginning with 'HG:' are removed. | ||||
HG: Leave message empty to abort commit. | ||||
HG: -- | ||||
HG: user: Nicolas Dumazet <nicdumz.commits@gmail.com> | ||||
HG: branch 'default' | ||||
|
r22895 | HG: added D | ||
|
r35394 | saved backup bundle to $TESTTMP/a1/.hg/strip-backup/32af7686d403-6f7dface-rebase.hg | ||
|
r28022 | $ cat D.orig | ||
collide | ||||
$ rm D.orig | ||||
|
r12608 | |||
$ hg tglog | ||||
|
r35386 | o 7: 1619f02ff7dd 'D' | ||
|
r17005 | | | ||
|
r35386 | @ 6: 02de42196ebe 'H' | ||
|
r17005 | | | ||
|
r35386 | | o 5: eea13746799a 'G' | ||
|
r17005 | |/| | ||
|
r35386 | o | 4: 24b6387c8c8c 'F' | ||
|
r12608 | | | | ||
|
r35386 | | o 3: 9520eea781bc 'E' | ||
|
r17005 | |/ | ||
|
r35386 | | o 2: 5fddd98957c8 'C' | ||
|
r14119 | | | | ||
|
r35386 | | o 1: 42ccdea3bb16 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r12608 | |||
$ cd .. | ||||
|
r14119 | D onto F - intermediate point: | ||
|
r28022 | (this also tests that editor is not invoked if '--edit' is not specified, and | ||
that we can ignore for colliding untracked files) | ||||
|
r12608 | |||
$ hg clone -q -u . a a2 | ||||
$ cd a2 | ||||
|
r28022 | $ echo collide > D | ||
|
r12608 | |||
|
r28022 | $ HGEDITOR=cat hg rebase -s 3 -d 5 --config merge.checkunknown=ignore | ||
|
r23517 | rebasing 3:32af7686d403 "D" | ||
|
r35394 | saved backup bundle to $TESTTMP/a2/.hg/strip-backup/32af7686d403-6f7dface-rebase.hg | ||
|
r28022 | $ cat D.orig | ||
collide | ||||
$ rm D.orig | ||||
|
r12608 | |||
$ hg tglog | ||||
|
r35386 | o 7: 2107530e74ab 'D' | ||
|
r17005 | | | ||
|
r35386 | | @ 6: 02de42196ebe 'H' | ||
|
r17005 | |/ | ||
|
r35386 | | o 5: eea13746799a 'G' | ||
|
r17005 | |/| | ||
|
r35386 | o | 4: 24b6387c8c8c 'F' | ||
|
r12608 | | | | ||
|
r35386 | | o 3: 9520eea781bc 'E' | ||
|
r17005 | |/ | ||
|
r35386 | | o 2: 5fddd98957c8 'C' | ||
|
r17005 | | | | ||
|
r35386 | | o 1: 42ccdea3bb16 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r12608 | |||
$ cd .. | ||||
|
r14119 | E onto H - skip of G: | ||
|
r28022 | (this also tests that we can overwrite untracked files and don't create backups | ||
if they have the same contents) | ||||
|
r12608 | |||
$ hg clone -q -u . a a3 | ||||
$ cd a3 | ||||
|
r28022 | $ hg cat -r 4 E | tee E | ||
E | ||||
|
r12608 | |||
|
r14119 | $ hg rebase -s 4 -d 7 | ||
|
r23517 | rebasing 4:9520eea781bc "E" | ||
rebasing 6:eea13746799a "G" | ||||
|
r40900 | note: not rebasing 6:eea13746799a "G", its destination already has all its changes | ||
|
r35394 | saved backup bundle to $TESTTMP/a3/.hg/strip-backup/9520eea781bc-fcd8edd4-rebase.hg | ||
|
r28022 | $ f E.orig | ||
E.orig: file not found | ||||
|
r12608 | |||
$ hg tglog | ||||
|
r35386 | o 6: 9f8b8ec77260 'E' | ||
|
r14119 | | | ||
|
r35386 | @ 5: 02de42196ebe 'H' | ||
|
r12608 | | | ||
|
r35386 | o 4: 24b6387c8c8c 'F' | ||
|
r12608 | | | ||
|
r35386 | | o 3: 32af7686d403 'D' | ||
|
r14119 | | | | ||
|
r35386 | | o 2: 5fddd98957c8 'C' | ||
|
r14119 | | | | ||
|
r35386 | | o 1: 42ccdea3bb16 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r12608 | |||
$ cd .. | ||||
|
r14119 | F onto E - rebase of a branching point (skip G): | ||
|
r12608 | |||
$ hg clone -q -u . a a4 | ||||
$ cd a4 | ||||
|
r14119 | $ hg rebase -s 5 -d 4 | ||
|
r23517 | rebasing 5:24b6387c8c8c "F" | ||
rebasing 6:eea13746799a "G" | ||||
|
r40900 | note: not rebasing 6:eea13746799a "G", its destination already has all its changes | ||
|
r46356 | rebasing 7:02de42196ebe tip "H" | ||
|
r35394 | saved backup bundle to $TESTTMP/a4/.hg/strip-backup/24b6387c8c8c-c3fe765d-rebase.hg | ||
|
r12608 | |||
$ hg tglog | ||||
|
r35386 | @ 6: e9240aeaa6ad 'H' | ||
|
r14119 | | | ||
|
r35386 | o 5: 5d0ccadb6e3e 'F' | ||
|
r12608 | | | ||
|
r35386 | o 4: 9520eea781bc 'E' | ||
|
r12608 | | | ||
|
r35386 | | o 3: 32af7686d403 'D' | ||
|
r14119 | | | | ||
|
r35386 | | o 2: 5fddd98957c8 'C' | ||
|
r14119 | | | | ||
|
r35386 | | o 1: 42ccdea3bb16 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r12608 | |||
$ cd .. | ||||
|
r14119 | G onto H - merged revision having a parent in ancestors of target: | ||
|
r12608 | |||
$ hg clone -q -u . a a5 | ||||
$ cd a5 | ||||
|
r14119 | $ hg rebase -s 6 -d 7 | ||
|
r23517 | rebasing 6:eea13746799a "G" | ||
|
r35394 | saved backup bundle to $TESTTMP/a5/.hg/strip-backup/eea13746799a-883828ed-rebase.hg | ||
|
r12608 | |||
$ hg tglog | ||||
|
r35386 | o 7: 397834907a90 'G' | ||
|
r12608 | |\ | ||
|
r35386 | | @ 6: 02de42196ebe 'H' | ||
|
r12608 | | | | ||
|
r35386 | | o 5: 24b6387c8c8c 'F' | ||
|
r14119 | | | | ||
|
r35386 | o | 4: 9520eea781bc 'E' | ||
|
r14119 | |/ | ||
|
r35386 | | o 3: 32af7686d403 'D' | ||
|
r12608 | | | | ||
|
r35386 | | o 2: 5fddd98957c8 'C' | ||
|
r14119 | | | | ||
|
r35386 | | o 1: 42ccdea3bb16 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r12608 | |||
$ cd .. | ||||
|
r14119 | F onto B - G maintains E as parent: | ||
|
r12608 | |||
$ hg clone -q -u . a a6 | ||||
$ cd a6 | ||||
|
r14119 | $ hg rebase -s 5 -d 1 | ||
|
r23517 | rebasing 5:24b6387c8c8c "F" | ||
rebasing 6:eea13746799a "G" | ||||
|
r46356 | rebasing 7:02de42196ebe tip "H" | ||
|
r35394 | saved backup bundle to $TESTTMP/a6/.hg/strip-backup/24b6387c8c8c-c3fe765d-rebase.hg | ||
|
r12608 | |||
$ hg tglog | ||||
|
r35386 | @ 7: c87be72f9641 'H' | ||
|
r12608 | | | ||
|
r35386 | | o 6: 17badd73d4f1 'G' | ||
|
r12608 | |/| | ||
|
r35386 | o | 5: 74fb9ed646c4 'F' | ||
|
r14119 | | | | ||
|
r35386 | | o 4: 9520eea781bc 'E' | ||
|
r12608 | | | | ||
|
r35386 | | | o 3: 32af7686d403 'D' | ||
|
r14119 | | | | | ||
|
r35386 | +---o 2: 5fddd98957c8 'C' | ||
|
r12608 | | | | ||
|
r35386 | o | 1: 42ccdea3bb16 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r12608 | |||
$ cd .. | ||||
These will fail (using --source): | ||||
|
r14119 | G onto F - rebase onto an ancestor: | ||
|
r12608 | |||
$ hg clone -q -u . a a7 | ||||
$ cd a7 | ||||
|
r14119 | $ hg rebase -s 6 -d 5 | ||
|
r15267 | nothing to rebase | ||
[1] | ||||
|
r12608 | |||
|
r14119 | F onto G - rebase onto a descendant: | ||
|
r12608 | |||
|
r14119 | $ hg rebase -s 5 -d 6 | ||
|
r34008 | abort: source and destination form a cycle | ||
|
r47377 | [10] | ||
|
r12608 | |||
|
r14119 | G onto B - merge revision with both parents not in ancestors of target: | ||
|
r12608 | |||
|
r14119 | $ hg rebase -s 6 -d 1 | ||
|
r23517 | rebasing 6:eea13746799a "G" | ||
|
r33786 | abort: cannot rebase 6:eea13746799a without moving at least one of its parents | ||
|
r47377 | [10] | ||
|
r31225 | $ hg rebase --abort | ||
rebase aborted | ||||
|
r12608 | |||
These will abort gracefully (using --base): | ||||
|
r14119 | G onto G - rebase onto same changeset: | ||
|
r12608 | |||
|
r14119 | $ hg rebase -b 6 -d 6 | ||
|
r20249 | nothing to rebase - eea13746799a is both "base" and destination | ||
|
r12608 | [1] | ||
|
r14119 | G onto F - rebase onto an ancestor: | ||
|
r12608 | |||
|
r14119 | $ hg rebase -b 6 -d 5 | ||
|
r12608 | nothing to rebase | ||
[1] | ||||
|
r14119 | F onto G - rebase onto a descendant: | ||
|
r12608 | |||
|
r14119 | $ hg rebase -b 5 -d 6 | ||
|
r20249 | nothing to rebase - "base" 24b6387c8c8c is already an ancestor of destination eea13746799a | ||
|
r12608 | [1] | ||
|
r15132 | C onto A - rebase onto an ancestor: | ||
$ hg rebase -d 0 -s 2 | ||||
|
r23517 | rebasing 2:5fddd98957c8 "C" | ||
rebasing 3:32af7686d403 "D" | ||||
|
r35394 | saved backup bundle to $TESTTMP/a7/.hg/strip-backup/5fddd98957c8-f9244fa1-rebase.hg | ||
|
r15132 | $ hg tglog | ||
|
r35386 | o 7: c9659aac0000 'D' | ||
|
r15132 | | | ||
|
r35386 | o 6: e1c4361dd923 'C' | ||
|
r15132 | | | ||
|
r35386 | | @ 5: 02de42196ebe 'H' | ||
|
r15132 | | | | ||
|
r35386 | | | o 4: eea13746799a 'G' | ||
|
r15132 | | |/| | ||
|
r35386 | | o | 3: 24b6387c8c8c 'F' | ||
|
r15132 | |/ / | ||
|
r35386 | | o 2: 9520eea781bc 'E' | ||
|
r15132 | |/ | ||
|
r35386 | | o 1: 42ccdea3bb16 'B' | ||
|
r15132 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r15132 | |||
|
r15742 | |||
Check rebasing public changeset | ||||
$ hg pull --config phases.publish=True -q -r 6 . # update phase of 6 | ||||
|
r19059 | $ hg rebase -d 0 -b 6 | ||
|
r47592 | nothing to rebase | ||
[1] | ||||
|
r15742 | $ hg rebase -d 5 -b 6 | ||
|
r44386 | abort: cannot rebase public changesets | ||
|
r29966 | (see 'hg help phases' for details) | ||
|
r46457 | [10] | ||
|
r31302 | $ hg rebase -d 5 -r '1 + (6::)' | ||
|
r44386 | abort: cannot rebase public changesets | ||
|
r31302 | (see 'hg help phases' for details) | ||
|
r46457 | [10] | ||
|
r15742 | |||
$ hg rebase -d 5 -b 6 --keep | ||||
|
r23517 | rebasing 6:e1c4361dd923 "C" | ||
|
r46356 | rebasing 7:c9659aac0000 tip "D" | ||
|
r15917 | |||
Check rebasing mutable changeset | ||||
Source phase greater or equal to destination phase: new changeset get the phase of source: | ||||
|
r23440 | $ hg id -n | ||
5 | ||||
|
r15917 | $ hg rebase -s9 -d0 | ||
|
r46356 | rebasing 9:2b23e52411f4 tip "D" | ||
|
r35394 | saved backup bundle to $TESTTMP/a7/.hg/strip-backup/2b23e52411f4-f942decf-rebase.hg | ||
|
r23440 | $ hg id -n # check we updated back to parent | ||
5 | ||||
|
r15917 | $ hg log --template "{phase}\n" -r 9 | ||
draft | ||||
$ hg rebase -s9 -d1 | ||||
|
r46356 | rebasing 9:2cb10d0cfc6c tip "D" | ||
|
r35394 | saved backup bundle to $TESTTMP/a7/.hg/strip-backup/2cb10d0cfc6c-ddb0f256-rebase.hg | ||
|
r15917 | $ hg log --template "{phase}\n" -r 9 | ||
draft | ||||
$ hg phase --force --secret 9 | ||||
$ hg rebase -s9 -d0 | ||||
|
r46356 | rebasing 9:c5b12b67163a tip "D" | ||
|
r35394 | saved backup bundle to $TESTTMP/a7/.hg/strip-backup/c5b12b67163a-4e372053-rebase.hg | ||
|
r15917 | $ hg log --template "{phase}\n" -r 9 | ||
secret | ||||
$ hg rebase -s9 -d1 | ||||
|
r46356 | rebasing 9:2a0524f868ac tip "D" | ||
|
r35394 | saved backup bundle to $TESTTMP/a7/.hg/strip-backup/2a0524f868ac-cefd8574-rebase.hg | ||
|
r15917 | $ hg log --template "{phase}\n" -r 9 | ||
secret | ||||
Source phase lower than destination phase: new changeset get the phase of destination: | ||||
|
r17005 | $ hg rebase -s8 -d9 | ||
|
r23517 | rebasing 8:6d4f22462821 "C" | ||
|
r35394 | saved backup bundle to $TESTTMP/a7/.hg/strip-backup/6d4f22462821-3441f70b-rebase.hg | ||
|
r17005 | $ hg log --template "{phase}\n" -r 'rev(9)' | ||
|
r15917 | secret | ||
|
r15270 | $ cd .. | ||
|
r15132 | |||
|
r34178 | Check that temporary bundle doesn't lose phase when not using generaldelta | ||
$ hg --config format.usegeneraldelta=no init issue5678 | ||||
$ cd issue5678 | ||||
$ grep generaldelta .hg/requires | ||||
[1] | ||||
$ echo a > a | ||||
$ hg ci -Aqm a | ||||
$ echo b > b | ||||
$ hg ci -Aqm b | ||||
$ hg co -q '.^' | ||||
$ echo c > c | ||||
$ hg ci -Aqm c | ||||
$ hg phase --public | ||||
$ hg log -G -T '{rev}:{node|shortest} {phase} {desc}\n' | ||||
@ 2:d36c public c | ||||
| | ||||
| o 1:d2ae draft b | ||||
|/ | ||||
o 0:cb9a public a | ||||
$ hg rebase -s 1 -d 2 | ||||
rebasing 1:d2ae7f538514 "b" | ||||
|
r35394 | saved backup bundle to $TESTTMP/issue5678/.hg/strip-backup/d2ae7f538514-2953539b-rebase.hg | ||
|
r34178 | $ hg log -G -T '{rev}:{node|shortest} {phase} {desc}\n' | ||
o 2:c882 draft b | ||||
| | ||||
|
r34179 | @ 1:d36c public c | ||
|
r34178 | | | ||
o 0:cb9a public a | ||||
$ cd .. | ||||
|
r15270 | Test for revset | ||
We need a bit different graph | ||||
All destination are B | ||||
$ hg init ah | ||||
$ cd ah | ||||
|
r16350 | $ hg unbundle "$TESTDIR/bundles/rebase-revset.hg" | ||
|
r15270 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 9 changesets with 9 changes to 9 files (+2 heads) | ||||
|
r39516 | new changesets 9ae2ed22e576:479ddb54a924 (9 drafts) | ||
|
r15270 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg tglog | ||||
|
r35386 | o 8: 479ddb54a924 'I' | ||
|
r15270 | | | ||
|
r35386 | o 7: 72434a4e60b0 'H' | ||
|
r15270 | | | ||
|
r35386 | o 6: 3d8a618087a7 'G' | ||
|
r15270 | | | ||
|
r35386 | | o 5: 41bfcc75ed73 'F' | ||
|
r15270 | | | | ||
|
r35386 | | o 4: c01897464e7f 'E' | ||
|
r15270 | |/ | ||
|
r35386 | o 3: ffd453c31098 'D' | ||
|
r15270 | | | ||
|
r35386 | o 2: c9e50f6cdc55 'C' | ||
|
r15270 | | | ||
|
r35386 | | o 1: 8fd0f7e49f53 'B' | ||
|
r15270 | |/ | ||
|
r35386 | o 0: 9ae2ed22e576 'A' | ||
|
r15270 | |||
$ cd .. | ||||
Simple case with keep: | ||||
Source on have two descendant heads but ask for one | ||||
$ hg clone -q -u . ah ah1 | ||||
$ cd ah1 | ||||
$ hg rebase -r '2::8' -d 1 | ||||
|
r44386 | abort: cannot rebase changeset with children | ||
|
r47782 | (see 'hg help evolution.instability') | ||
|
r46457 | [10] | ||
|
r25025 | $ hg rebase -r '2::8' -d 1 -k | ||
|
r23517 | rebasing 2:c9e50f6cdc55 "C" | ||
rebasing 3:ffd453c31098 "D" | ||||
rebasing 6:3d8a618087a7 "G" | ||||
rebasing 7:72434a4e60b0 "H" | ||||
|
r46356 | rebasing 8:479ddb54a924 tip "I" | ||
|
r15270 | $ hg tglog | ||
|
r35386 | o 13: 9bf1d9358a90 'I' | ||
|
r15270 | | | ||
|
r35386 | o 12: 274623a778d4 'H' | ||
|
r15270 | | | ||
|
r35386 | o 11: ab8c8617c8e8 'G' | ||
|
r15270 | | | ||
|
r35386 | o 10: c8cbf59f70da 'D' | ||
|
r15270 | | | ||
|
r35386 | o 9: 563e4faab485 'C' | ||
|
r15270 | | | ||
|
r35386 | | o 8: 479ddb54a924 'I' | ||
|
r15270 | | | | ||
|
r35386 | | o 7: 72434a4e60b0 'H' | ||
|
r15270 | | | | ||
|
r35386 | | o 6: 3d8a618087a7 'G' | ||
|
r15270 | | | | ||
|
r35386 | | | o 5: 41bfcc75ed73 'F' | ||
|
r15270 | | | | | ||
|
r35386 | | | o 4: c01897464e7f 'E' | ||
|
r15270 | | |/ | ||
|
r35386 | | o 3: ffd453c31098 'D' | ||
|
r15270 | | | | ||
|
r35386 | | o 2: c9e50f6cdc55 'C' | ||
|
r15270 | | | | ||
|
r35386 | o | 1: 8fd0f7e49f53 'B' | ||
|
r15270 | |/ | ||
|
r35386 | o 0: 9ae2ed22e576 'A' | ||
|
r15270 | |||
$ cd .. | ||||
Base on have one descendant heads we ask for but common ancestor have two | ||||
$ hg clone -q -u . ah ah2 | ||||
$ cd ah2 | ||||
$ hg rebase -r '3::8' -d 1 | ||||
|
r44386 | abort: cannot rebase changeset with children | ||
|
r47782 | (see 'hg help evolution.instability') | ||
|
r46457 | [10] | ||
|
r15270 | $ hg rebase -r '3::8' -d 1 --keep | ||
|
r23517 | rebasing 3:ffd453c31098 "D" | ||
rebasing 6:3d8a618087a7 "G" | ||||
rebasing 7:72434a4e60b0 "H" | ||||
|
r46356 | rebasing 8:479ddb54a924 tip "I" | ||
|
r15270 | $ hg tglog | ||
|
r35386 | o 12: 9d7da0053b1c 'I' | ||
|
r15270 | | | ||
|
r35386 | o 11: 8fbd00952cbc 'H' | ||
|
r15270 | | | ||
|
r35386 | o 10: 51d434a615ee 'G' | ||
|
r15270 | | | ||
|
r35386 | o 9: a9c125634b0b 'D' | ||
|
r17005 | | | ||
|
r35386 | | o 8: 479ddb54a924 'I' | ||
|
r17005 | | | | ||
|
r35386 | | o 7: 72434a4e60b0 'H' | ||
|
r17005 | | | | ||
|
r35386 | | o 6: 3d8a618087a7 'G' | ||
|
r17005 | | | | ||
|
r35386 | | | o 5: 41bfcc75ed73 'F' | ||
|
r15270 | | | | | ||
|
r35386 | | | o 4: c01897464e7f 'E' | ||
|
r15270 | | |/ | ||
|
r35386 | | o 3: ffd453c31098 'D' | ||
|
r17005 | | | | ||
|
r35386 | | o 2: c9e50f6cdc55 'C' | ||
|
r15270 | | | | ||
|
r35386 | o | 1: 8fd0f7e49f53 'B' | ||
|
r15270 | |/ | ||
|
r35386 | o 0: 9ae2ed22e576 'A' | ||
|
r15270 | |||
$ cd .. | ||||
rebase subset | ||||
$ hg clone -q -u . ah ah3 | ||||
$ cd ah3 | ||||
$ hg rebase -r '3::7' -d 1 | ||||
|
r44386 | abort: cannot rebase changeset with children | ||
|
r47782 | (see 'hg help evolution.instability') | ||
|
r46457 | [10] | ||
|
r15270 | $ hg rebase -r '3::7' -d 1 --keep | ||
|
r23517 | rebasing 3:ffd453c31098 "D" | ||
rebasing 6:3d8a618087a7 "G" | ||||
rebasing 7:72434a4e60b0 "H" | ||||
|
r15270 | $ hg tglog | ||
|
r35386 | o 11: 8fbd00952cbc 'H' | ||
|
r15270 | | | ||
|
r35386 | o 10: 51d434a615ee 'G' | ||
|
r15270 | | | ||
|
r35386 | o 9: a9c125634b0b 'D' | ||
|
r17005 | | | ||
|
r35386 | | o 8: 479ddb54a924 'I' | ||
|
r17005 | | | | ||
|
r35386 | | o 7: 72434a4e60b0 'H' | ||
|
r17005 | | | | ||
|
r35386 | | o 6: 3d8a618087a7 'G' | ||
|
r17005 | | | | ||
|
r35386 | | | o 5: 41bfcc75ed73 'F' | ||
|
r15270 | | | | | ||
|
r35386 | | | o 4: c01897464e7f 'E' | ||
|
r15270 | | |/ | ||
|
r35386 | | o 3: ffd453c31098 'D' | ||
|
r17005 | | | | ||
|
r35386 | | o 2: c9e50f6cdc55 'C' | ||
|
r15270 | | | | ||
|
r35386 | o | 1: 8fd0f7e49f53 'B' | ||
|
r15270 | |/ | ||
|
r35386 | o 0: 9ae2ed22e576 'A' | ||
|
r15270 | |||
$ cd .. | ||||
rebase subset with multiple head | ||||
$ hg clone -q -u . ah ah4 | ||||
$ cd ah4 | ||||
$ hg rebase -r '3::(7+5)' -d 1 | ||||
|
r44386 | abort: cannot rebase changeset with children | ||
|
r47782 | (see 'hg help evolution.instability') | ||
|
r46457 | [10] | ||
|
r15270 | $ hg rebase -r '3::(7+5)' -d 1 --keep | ||
|
r23517 | rebasing 3:ffd453c31098 "D" | ||
rebasing 4:c01897464e7f "E" | ||||
rebasing 5:41bfcc75ed73 "F" | ||||
rebasing 6:3d8a618087a7 "G" | ||||
rebasing 7:72434a4e60b0 "H" | ||||
|
r15270 | $ hg tglog | ||
|
r35386 | o 13: 8fbd00952cbc 'H' | ||
|
r15270 | | | ||
|
r35386 | o 12: 51d434a615ee 'G' | ||
|
r15270 | | | ||
|
r35386 | | o 11: df23d8bda0b7 'F' | ||
|
r15270 | | | | ||
|
r35386 | | o 10: 47b7889448ff 'E' | ||
|
r15270 | |/ | ||
|
r35386 | o 9: a9c125634b0b 'D' | ||
|
r17005 | | | ||
|
r35386 | | o 8: 479ddb54a924 'I' | ||
|
r17005 | | | | ||
|
r35386 | | o 7: 72434a4e60b0 'H' | ||
|
r17005 | | | | ||
|
r35386 | | o 6: 3d8a618087a7 'G' | ||
|
r17005 | | | | ||
|
r35386 | | | o 5: 41bfcc75ed73 'F' | ||
|
r15270 | | | | | ||
|
r35386 | | | o 4: c01897464e7f 'E' | ||
|
r15270 | | |/ | ||
|
r35386 | | o 3: ffd453c31098 'D' | ||
|
r17005 | | | | ||
|
r35386 | | o 2: c9e50f6cdc55 'C' | ||
|
r15270 | | | | ||
|
r35386 | o | 1: 8fd0f7e49f53 'B' | ||
|
r15270 | |/ | ||
|
r35386 | o 0: 9ae2ed22e576 'A' | ||
|
r15270 | |||
$ cd .. | ||||
More advanced tests | ||||
rebase on ancestor with revset | ||||
$ hg clone -q -u . ah ah5 | ||||
$ cd ah5 | ||||
$ hg rebase -r '6::' -d 2 | ||||
|
r23517 | rebasing 6:3d8a618087a7 "G" | ||
rebasing 7:72434a4e60b0 "H" | ||||
|
r46356 | rebasing 8:479ddb54a924 tip "I" | ||
|
r35394 | saved backup bundle to $TESTTMP/ah5/.hg/strip-backup/3d8a618087a7-b4f73f31-rebase.hg | ||
|
r15270 | $ hg tglog | ||
|
r35386 | o 8: fcb52e68a694 'I' | ||
|
r15270 | | | ||
|
r35386 | o 7: 77bd65cd7600 'H' | ||
|
r15270 | | | ||
|
r35386 | o 6: 12d0e738fb18 'G' | ||
|
r15270 | | | ||
|
r35386 | | o 5: 41bfcc75ed73 'F' | ||
|
r15270 | | | | ||
|
r35386 | | o 4: c01897464e7f 'E' | ||
|
r15270 | | | | ||
|
r35386 | | o 3: ffd453c31098 'D' | ||
|
r15270 | |/ | ||
|
r35386 | o 2: c9e50f6cdc55 'C' | ||
|
r15270 | | | ||
|
r35386 | | o 1: 8fd0f7e49f53 'B' | ||
|
r15270 | |/ | ||
|
r35386 | o 0: 9ae2ed22e576 'A' | ||
|
r15270 | |||
$ cd .. | ||||
rebase with multiple root. | ||||
We rebase E and G on B | ||||
We would expect heads are I, F if it was supported | ||||
$ hg clone -q -u . ah ah6 | ||||
$ cd ah6 | ||||
$ hg rebase -r '(4+6)::' -d 1 | ||||
|
r23517 | rebasing 4:c01897464e7f "E" | ||
rebasing 5:41bfcc75ed73 "F" | ||||
rebasing 6:3d8a618087a7 "G" | ||||
rebasing 7:72434a4e60b0 "H" | ||||
|
r46356 | rebasing 8:479ddb54a924 tip "I" | ||
|
r35394 | saved backup bundle to $TESTTMP/ah6/.hg/strip-backup/3d8a618087a7-aae93a24-rebase.hg | ||
|
r18424 | $ hg tglog | ||
|
r35386 | o 8: 9136df9a87cf 'I' | ||
|
r18424 | | | ||
|
r35386 | o 7: 23e8f30da832 'H' | ||
|
r18424 | | | ||
|
r35386 | o 6: b0efe8534e8b 'G' | ||
|
r18424 | | | ||
|
r35386 | | o 5: 6eb5b496ab79 'F' | ||
|
r18424 | | | | ||
|
r35386 | | o 4: d15eade9b0b1 'E' | ||
|
r18424 | |/ | ||
|
r35386 | | o 3: ffd453c31098 'D' | ||
|
r18424 | | | | ||
|
r35386 | | o 2: c9e50f6cdc55 'C' | ||
|
r18424 | | | | ||
|
r35386 | o | 1: 8fd0f7e49f53 'B' | ||
|
r18424 | |/ | ||
|
r35386 | o 0: 9ae2ed22e576 'A' | ||
|
r18424 | |||
|
r15270 | $ cd .. | ||
|
r18424 | |||
|
r18644 | More complex rebase with multiple roots | ||
|
r18424 | each root have a different common ancestor with the destination and this is a detach | ||
(setup) | ||||
$ hg clone -q -u . a a8 | ||||
$ cd a8 | ||||
$ echo I > I | ||||
$ hg add I | ||||
$ hg commit -m I | ||||
$ hg up 4 | ||||
1 files updated, 0 files merged, 3 files removed, 0 files unresolved | ||||
$ echo I > J | ||||
$ hg add J | ||||
$ hg commit -m J | ||||
created new head | ||||
$ echo I > K | ||||
$ hg add K | ||||
$ hg commit -m K | ||||
$ hg tglog | ||||
|
r35386 | @ 10: 23a4ace37988 'K' | ||
|
r18424 | | | ||
|
r35386 | o 9: 1301922eeb0c 'J' | ||
|
r18424 | | | ||
|
r35386 | | o 8: e7ec4e813ba6 'I' | ||
|
r18424 | | | | ||
|
r35386 | | o 7: 02de42196ebe 'H' | ||
|
r18424 | | | | ||
|
r35386 | +---o 6: eea13746799a 'G' | ||
|
r18424 | | |/ | ||
|
r35386 | | o 5: 24b6387c8c8c 'F' | ||
|
r18424 | | | | ||
|
r35386 | o | 4: 9520eea781bc 'E' | ||
|
r18424 | |/ | ||
|
r35386 | | o 3: 32af7686d403 'D' | ||
|
r18424 | | | | ||
|
r35386 | | o 2: 5fddd98957c8 'C' | ||
|
r18424 | | | | ||
|
r35386 | | o 1: 42ccdea3bb16 'B' | ||
|
r18424 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r18424 | |||
(actual test) | ||||
$ hg rebase --dest 'desc(G)' --rev 'desc(K) + desc(I)' | ||||
|
r23517 | rebasing 8:e7ec4e813ba6 "I" | ||
|
r46356 | rebasing 10:23a4ace37988 tip "K" | ||
|
r35394 | saved backup bundle to $TESTTMP/a8/.hg/strip-backup/23a4ace37988-b06984b3-rebase.hg | ||
|
r18424 | $ hg log --rev 'children(desc(G))' | ||
changeset: 9:adb617877056 | ||||
parent: 6:eea13746799a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: I | ||||
changeset: 10:882431a34a0e | ||||
tag: tip | ||||
parent: 6:eea13746799a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: K | ||||
$ hg tglog | ||||
|
r35386 | @ 10: 882431a34a0e 'K' | ||
|
r18424 | | | ||
|
r35386 | | o 9: adb617877056 'I' | ||
|
r18424 | |/ | ||
|
r35386 | | o 8: 1301922eeb0c 'J' | ||
|
r18424 | | | | ||
|
r35386 | | | o 7: 02de42196ebe 'H' | ||
|
r18424 | | | | | ||
|
r35386 | o---+ 6: eea13746799a 'G' | ||
|
r18424 | |/ / | ||
|
r35386 | | o 5: 24b6387c8c8c 'F' | ||
|
r18424 | | | | ||
|
r35386 | o | 4: 9520eea781bc 'E' | ||
|
r18424 | |/ | ||
|
r35386 | | o 3: 32af7686d403 'D' | ||
|
r18424 | | | | ||
|
r35386 | | o 2: 5fddd98957c8 'C' | ||
|
r18424 | | | | ||
|
r35386 | | o 1: 42ccdea3bb16 'B' | ||
|
r18424 | |/ | ||
|
r35386 | o 0: cd010b8cd998 'A' | ||
|
r18424 | |||
|
r20335 | |||
|
r22183 | Test that rebase is not confused by $CWD disappearing during rebase (issue4121) | ||
|
r20335 | |||
$ cd .. | ||||
$ hg init cwd-vanish | ||||
$ cd cwd-vanish | ||||
$ touch initial-file | ||||
$ hg add initial-file | ||||
$ hg commit -m 'initial commit' | ||||
$ touch dest-file | ||||
$ hg add dest-file | ||||
$ hg commit -m 'dest commit' | ||||
$ hg up 0 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ touch other-file | ||||
$ hg add other-file | ||||
$ hg commit -m 'first source commit' | ||||
created new head | ||||
$ mkdir subdir | ||||
$ cd subdir | ||||
$ touch subfile | ||||
$ hg add subfile | ||||
$ hg commit -m 'second source with subdir' | ||||
|
r33338 | |||
|
r20335 | $ hg rebase -b . -d 1 --traceback | ||
|
r23517 | rebasing 2:779a07b1b7a0 "first source commit" | ||
|
r33338 | current directory was removed (rmcwd !) | ||
(consider changing to repo root: $TESTTMP/cwd-vanish) (rmcwd !) | ||||
|
r46356 | rebasing 3:a7d6f3a00bf3 tip "second source with subdir" | ||
|
r35394 | saved backup bundle to $TESTTMP/cwd-vanish/.hg/strip-backup/779a07b1b7a0-853e0073-rebase.hg | ||
|
r26719 | |||
|
r30849 | Get back to the root of cwd-vanish. Note that even though `cd ..` | ||
works on most systems, it does not work on FreeBSD 10, so we use an | ||||
absolute path to get back to the repository. | ||||
|
r31143 | $ cd $TESTTMP | ||
|
r30849 | |||
|
r30007 | Test that rebase is done in topo order (issue5370) | ||
$ hg init order | ||||
$ cd order | ||||
$ touch a && hg add a && hg ci -m A | ||||
$ touch b && hg add b && hg ci -m B | ||||
$ touch c && hg add c && hg ci -m C | ||||
$ hg up 1 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ touch d && hg add d && hg ci -m D | ||||
created new head | ||||
$ hg up 2 | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ touch e && hg add e && hg ci -m E | ||||
$ hg up 3 | ||||
1 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ touch f && hg add f && hg ci -m F | ||||
$ hg up 0 | ||||
0 files updated, 0 files merged, 3 files removed, 0 files unresolved | ||||
$ touch g && hg add g && hg ci -m G | ||||
created new head | ||||
$ hg tglog | ||||
|
r35386 | @ 6: 124bb27b6f28 'G' | ||
|
r30007 | | | ||
|
r35386 | | o 5: 412b391de760 'F' | ||
|
r30007 | | | | ||
|
r35386 | | | o 4: 82ae8dc7a9b7 'E' | ||
|
r30007 | | | | | ||
|
r35386 | | o | 3: ab709c9f7171 'D' | ||
|
r30007 | | | | | ||
|
r35386 | | | o 2: d84f5cfaaf14 'C' | ||
|
r30007 | | |/ | ||
|
r35386 | | o 1: 76035bbd54bd 'B' | ||
|
r30007 | |/ | ||
|
r35386 | o 0: 216878401574 'A' | ||
|
r30007 | |||
$ hg rebase -s 1 -d 6 | ||||
rebasing 1:76035bbd54bd "B" | ||||
rebasing 2:d84f5cfaaf14 "C" | ||||
rebasing 4:82ae8dc7a9b7 "E" | ||||
rebasing 3:ab709c9f7171 "D" | ||||
rebasing 5:412b391de760 "F" | ||||
|
r35394 | saved backup bundle to $TESTTMP/order/.hg/strip-backup/76035bbd54bd-e341bc99-rebase.hg | ||
|
r30007 | |||
$ hg tglog | ||||
|
r35386 | o 6: 31884cfb735e 'F' | ||
|
r30007 | | | ||
|
r35386 | o 5: 6d89fa5b0909 'D' | ||
|
r30007 | | | ||
|
r35386 | | o 4: de64d97c697b 'E' | ||
|
r30007 | | | | ||
|
r35386 | | o 3: b18e4d2d0aa1 'C' | ||
|
r30007 | |/ | ||
|
r35386 | o 2: 0983daf9ff6a 'B' | ||
|
r30007 | | | ||
|
r35386 | @ 1: 124bb27b6f28 'G' | ||
|
r30007 | | | ||
|
r35386 | o 0: 216878401574 'A' | ||
|
r30007 | |||
|
r26719 | Test experimental revset | ||
|
r28135 | ======================== | ||
|
r26719 | |||
|
r31143 | $ cd ../cwd-vanish | ||
|
r28135 | |||
|
r30332 | Make the repo a bit more interesting | ||
|
r28135 | |||
$ hg up 1 | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ echo aaa > aaa | ||||
$ hg add aaa | ||||
$ hg commit -m aaa | ||||
created new head | ||||
$ hg log -G | ||||
@ changeset: 4:5f7bc9025ed2 | ||||
| tag: tip | ||||
| parent: 1:58d79cc1cf43 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: aaa | ||||
| | ||||
| o changeset: 3:1910d5ff34ea | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: second source with subdir | ||||
| | | ||||
| o changeset: 2:82901330b6ef | ||||
|/ user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: first source commit | ||||
| | ||||
o changeset: 1:58d79cc1cf43 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: dest commit | ||||
| | ||||
o changeset: 0:e94b687f7da3 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: initial commit | ||||
Testing from lower head | ||||
$ hg up 3 | ||||
2 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
|
r26719 | $ hg log -r '_destrebase()' | ||
|
r28135 | changeset: 4:5f7bc9025ed2 | ||
|
r26719 | tag: tip | ||
|
r28135 | parent: 1:58d79cc1cf43 | ||
|
r26719 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r28135 | summary: aaa | ||
|
r26719 | |||
|
r28135 | |||
Testing from upper head | ||||
|
r28189 | $ hg log -r '_destrebase(4)' | ||
changeset: 3:1910d5ff34ea | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: second source with subdir | ||||
|
r28135 | $ hg up 4 | ||
1 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ hg log -r '_destrebase()' | ||||
|
r28189 | changeset: 3:1910d5ff34ea | ||
|
r28135 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r28189 | summary: second source with subdir | ||
|
r28135 | |||
|
r33055 | Testing rebase being called inside another transaction | ||
$ cd $TESTTMP | ||||
$ hg init tr-state | ||||
$ cd tr-state | ||||
$ cat > $TESTTMP/wraprebase.py <<EOF | ||||
> from __future__ import absolute_import | ||||
> from mercurial import extensions | ||||
> def _rebase(orig, ui, repo, *args, **kwargs): | ||||
> with repo.wlock(): | ||||
> with repo.lock(): | ||||
|
r36494 | > with repo.transaction(b'wrappedrebase'): | ||
|
r33055 | > return orig(ui, repo, *args, **kwargs) | ||
> def wraprebase(loaded): | ||||
> assert loaded | ||||
|
r36494 | > rebasemod = extensions.find(b'rebase') | ||
> extensions.wrapcommand(rebasemod.cmdtable, b'rebase', _rebase) | ||||
|
r33055 | > def extsetup(ui): | ||
|
r36494 | > extensions.afterloaded(b'rebase', wraprebase) | ||
|
r33055 | > EOF | ||
$ cat >> .hg/hgrc <<EOF | ||||
> [extensions] | ||||
> wraprebase=$TESTTMP/wraprebase.py | ||||
> [experimental] | ||||
|
r34866 | > evolution=true | ||
|
r33055 | > EOF | ||
$ hg debugdrawdag <<'EOS' | ||||
> B C | ||||
> |/ | ||||
> A | ||||
> EOS | ||||
$ hg rebase -s C -d B | ||||
|
r46356 | rebasing 2:dc0947a82db8 C tip "C" | ||
|
r33055 | |||
$ [ -f .hg/rebasestate ] && echo 'WRONG: rebasestate should not exist' | ||||
|
r33056 | [1] | ||