test-rebase-collapse.t
819 lines
| 16.1 KiB
| text/troff
|
Tads3Lexer
/ tests / test-rebase-collapse.t
|
r12608 | $ cat >> $HGRCPATH <<EOF | ||
> [extensions] | ||||
> rebase= | ||||
|
r17013 | > mq= | ||
|
r37047 | > drawdag=$TESTDIR/drawdag.py | ||
|
r12608 | > | ||
|
r15742 | > [phases] | ||
> publish=False | ||||
> | ||||
|
r12608 | > [alias] | ||
|
r35386 | > tglog = log -G --template "{rev}: {node|short} '{desc}' {branches}\n" | ||
> tglogp = log -G --template "{rev}: {node|short} {phase} '{desc}' {branches}\n" | ||||
|
r12608 | > EOF | ||
|
r37047 | Highest phase of source commits is used: | ||
|
r12608 | |||
|
r37047 | $ hg init phase | ||
$ cd phase | ||||
$ hg debugdrawdag << 'EOF' | ||||
> D | ||||
> | | ||||
> F C | ||||
> | | | ||||
> E B | ||||
> |/ | ||||
> A | ||||
> EOF | ||||
|
r12608 | |||
|
r37047 | $ hg phase --force --secret D | ||
|
r15917 | |||
|
r20766 | $ cat > $TESTTMP/editor.sh <<EOF | ||
> echo "==== before editing" | ||||
> cat \$1 | ||||
> echo "====" | ||||
> echo "edited manually" >> \$1 | ||||
> EOF | ||||
|
r41231 | $ HGEDITOR="sh $TESTTMP/editor.sh" hg rebase --collapse --keepbranches -e --source B --dest F | ||
|
r37047 | rebasing 1:112478962961 "B" (B) | ||
rebasing 3:26805aba1e60 "C" (C) | ||||
rebasing 5:f585351a92f8 "D" (D tip) | ||||
|
r20766 | ==== before editing | ||
Collapsed revision | ||||
* B | ||||
* C | ||||
* D | ||||
HG: Enter commit message. Lines beginning with 'HG:' are removed. | ||||
HG: Leave message empty to abort commit. | ||||
HG: -- | ||||
|
r37047 | HG: user: test | ||
|
r20766 | HG: branch 'default' | ||
|
r22895 | HG: added B | ||
HG: added C | ||||
HG: added D | ||||
|
r20766 | ==== | ||
|
r37047 | saved backup bundle to $TESTTMP/phase/.hg/strip-backup/112478962961-cb2a9b47-rebase.hg | ||
|
r12608 | |||
|
r15917 | $ hg tglogp | ||
|
r37047 | o 3: 92fa5f5fe108 secret 'Collapsed revision | ||
|
r12608 | | * B | ||
| * C | ||||
|
r20766 | | * D | ||
| | ||||
| | ||||
| edited manually' | ||||
|
r37047 | o 2: 64a8289d2492 draft 'F' | ||
|
r12608 | | | ||
|
r37047 | o 1: 7fb047a69f22 draft 'E' | ||
| | ||||
o 0: 426bada5c675 draft 'A' | ||||
|
r12608 | |||
|
r19924 | $ hg manifest --rev tip | ||
|
r12608 | A | ||
B | ||||
C | ||||
D | ||||
|
r37047 | E | ||
|
r12608 | F | ||
$ cd .. | ||||
|
r37047 | Merge gets linearized: | ||
|
r12608 | |||
|
r37047 | $ hg init linearized-merge | ||
$ cd linearized-merge | ||||
|
r12608 | |||
|
r37047 | $ hg debugdrawdag << 'EOF' | ||
> F D | ||||
> |/| | ||||
> C B | ||||
> |/ | ||||
> A | ||||
> EOF | ||||
$ hg phase --force --secret D | ||||
$ hg rebase --source B --collapse --dest F | ||||
rebasing 1:112478962961 "B" (B) | ||||
rebasing 3:4e4f9194f9f1 "D" (D) | ||||
saved backup bundle to $TESTTMP/linearized-merge/.hg/strip-backup/112478962961-e389075b-rebase.hg | ||||
|
r12608 | |||
$ hg tglog | ||||
|
r37047 | o 3: 5bdc08b7da2b 'Collapsed revision | ||
| * B | ||||
| * D' | ||||
o 2: afc707c82df0 'F' | ||||
|
r12608 | | | ||
|
r37047 | o 1: dc0947a82db8 'C' | ||
| | ||||
o 0: 426bada5c675 'A' | ||||
|
r12608 | |||
|
r19924 | $ hg manifest --rev tip | ||
|
r12608 | A | ||
|
r37047 | B | ||
C | ||||
|
r12608 | F | ||
$ cd .. | ||||
|
r37047 | Custom message: | ||
$ hg init message | ||||
$ cd message | ||||
|
r13661 | |||
|
r37047 | $ hg debugdrawdag << 'EOF' | ||
> C | ||||
> | | ||||
> D B | ||||
> |/ | ||||
> A | ||||
> EOF | ||||
|
r13661 | |||
|
r37047 | |||
$ hg rebase --base B -m 'custom message' | ||||
|
r13661 | abort: message can only be specified with collapse | ||
[255] | ||||
|
r22206 | $ cat > $TESTTMP/checkeditform.sh <<EOF | ||
> env | grep HGEDITFORM | ||||
> true | ||||
> EOF | ||||
|
r37047 | $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg rebase --source B --collapse -m 'custom message' -e --dest D | ||
rebasing 1:112478962961 "B" (B) | ||||
rebasing 3:26805aba1e60 "C" (C tip) | ||||
|
r22206 | HGEDITFORM=rebase.collapse | ||
|
r37047 | saved backup bundle to $TESTTMP/message/.hg/strip-backup/112478962961-f4131707-rebase.hg | ||
|
r13661 | |||
$ hg tglog | ||||
|
r37047 | o 2: 2f197b9a08f3 'custom message' | ||
|
r13661 | | | ||
|
r37047 | o 1: b18e25de2cf5 'D' | ||
| | ||||
o 0: 426bada5c675 'A' | ||||
|
r13661 | |||
|
r19924 | $ hg manifest --rev tip | ||
|
r13661 | A | ||
|
r37047 | B | ||
C | ||||
D | ||||
|
r13661 | |||
$ cd .. | ||||
|
r12608 | |||
Rebase and collapse - more than one external (fail): | ||||
|
r37047 | $ hg init multiple-external-parents | ||
$ cd multiple-external-parents | ||||
|
r12608 | |||
|
r37047 | $ hg debugdrawdag << 'EOF' | ||
> G | ||||
> |\ | ||||
> | F | ||||
> | | | ||||
> D E | ||||
> |\| | ||||
> H C B | ||||
> \|/ | ||||
> A | ||||
> EOF | ||||
$ hg rebase -s C --dest H --collapse | ||||
abort: unable to collapse on top of 3, there is more than one external parent: 1, 6 | ||||
|
r12608 | [255] | ||
Rebase and collapse - E onto H: | ||||
|
r37047 | $ hg rebase -s E --dest I --collapse # root (E) is not a merge | ||
abort: unknown revision 'I'! | ||||
[255] | ||||
|
r12608 | |||
$ hg tglog | ||||
|
r37047 | o 7: 64e264db77f0 'G' | ||
|\ | ||||
| o 6: 11abe3fb10b8 'F' | ||||
| | | ||||
| o 5: 49cb92066bfd 'E' | ||||
|
r12608 | | | | ||
|
r37047 | o | 4: 4e4f9194f9f1 'D' | ||
|\| | ||||
| | o 3: 575c4b5ec114 'H' | ||||
| | | | ||||
o---+ 2: dc0947a82db8 'C' | ||||
/ / | ||||
o / 1: 112478962961 'B' | ||||
|
r12608 | |/ | ||
|
r37047 | o 0: 426bada5c675 'A' | ||
|
r12608 | |||
|
r19924 | $ hg manifest --rev tip | ||
|
r12608 | A | ||
|
r37047 | B | ||
|
r12608 | C | ||
E | ||||
F | ||||
$ cd .. | ||||
|
r17013 | |||
Test that branchheads cache is updated correctly when doing a strip in which | ||||
|
r18395 | the parent of the ancestor node to be stripped does not become a head and also, | ||
the parent of a node that is a child of the node stripped becomes a head (node | ||||
3). The code is now much simpler and we could just test a simpler scenario | ||||
We keep it the test this way in case new complexity is injected. | ||||
|
r17013 | |||
|
r37047 | Create repo b: | ||
$ hg init branch-heads | ||||
$ cd branch-heads | ||||
$ hg debugdrawdag << 'EOF' | ||||
> G | ||||
> |\ | ||||
> | F | ||||
> | | | ||||
> D E | ||||
> |\| | ||||
> H C B | ||||
> \|/ | ||||
> A | ||||
> EOF | ||||
|
r17013 | |||
$ hg heads --template="{rev}:{node} {branch}\n" | ||||
|
r37047 | 7:64e264db77f061f16d9132b70c5a58e2461fb630 default | ||
3:575c4b5ec114d64b681d33f8792853568bfb2b2c default | ||||
|
r17013 | |||
|
r37047 | $ cat $TESTTMP/branch-heads/.hg/cache/branch2-served | ||
64e264db77f061f16d9132b70c5a58e2461fb630 7 | ||||
575c4b5ec114d64b681d33f8792853568bfb2b2c o default | ||||
64e264db77f061f16d9132b70c5a58e2461fb630 o default | ||||
|
r17013 | |||
$ hg strip 4 | ||||
|
r37047 | saved backup bundle to $TESTTMP/branch-heads/.hg/strip-backup/4e4f9194f9f1-5ec4b5e6-backup.hg | ||
|
r17013 | |||
|
r37047 | $ cat $TESTTMP/branch-heads/.hg/cache/branch2-served | ||
11abe3fb10b8689b560681094b17fe161871d043 5 | ||||
dc0947a82db884575bb76ea10ac97b08536bfa03 o default | ||||
575c4b5ec114d64b681d33f8792853568bfb2b2c o default | ||||
11abe3fb10b8689b560681094b17fe161871d043 o default | ||||
|
r17013 | |||
$ hg heads --template="{rev}:{node} {branch}\n" | ||||
|
r37047 | 5:11abe3fb10b8689b560681094b17fe161871d043 default | ||
3:575c4b5ec114d64b681d33f8792853568bfb2b2c default | ||||
2:dc0947a82db884575bb76ea10ac97b08536bfa03 default | ||||
|
r17013 | |||
$ cd .. | ||||
|
r37047 | Preserves external parent | ||
|
r12608 | |||
|
r37047 | $ hg init external-parent | ||
$ cd external-parent | ||||
|
r12608 | |||
|
r37047 | $ hg debugdrawdag << 'EOF' | ||
> H | ||||
> |\ | ||||
> | G | ||||
> | | | ||||
> | F # F/E = F\n | ||||
> | | | ||||
> D E # D/D = D\n | ||||
> |\| | ||||
> I C B | ||||
> \|/ | ||||
> A | ||||
> EOF | ||||
|
r12608 | |||
|
r37047 | $ hg rebase -s F --dest I --collapse # root (F) is not a merge | ||
rebasing 6:c82b08f646f1 "F" (F) | ||||
rebasing 7:a6db7fa104e1 "G" (G) | ||||
rebasing 8:e1d201b72d91 "H" (H tip) | ||||
saved backup bundle to $TESTTMP/external-parent/.hg/strip-backup/c82b08f646f1-f2721fbf-rebase.hg | ||||
|
r12608 | |||
$ hg tglog | ||||
|
r37047 | o 6: 681daa3e686d 'Collapsed revision | ||
|\ * F | ||||
|
r12608 | | | * G | ||
| | * H' | ||||
|
r37047 | | | o 5: 49cb92066bfd 'E' | ||
| | | | ||||
| o | 4: 09143c0bf13e 'D' | ||||
| |\| | ||||
o | | 3: 08ebfeb61bac 'I' | ||||
| | | | ||||
| o | 2: dc0947a82db8 'C' | ||||
|/ / | ||||
| o 1: 112478962961 'B' | ||||
|
r12608 | |/ | ||
|
r37047 | o 0: 426bada5c675 'A' | ||
|
r12608 | |||
|
r19924 | $ hg manifest --rev tip | ||
|
r12608 | A | ||
C | ||||
D | ||||
E | ||||
|
r37047 | F | ||
|
r12608 | G | ||
I | ||||
|
r19924 | $ hg up tip -q | ||
|
r12608 | $ cat E | ||
F | ||||
$ cd .. | ||||
|
r37048 | Rebasing from multiple bases: | ||
$ hg init multiple-bases | ||||
$ cd multiple-bases | ||||
$ hg debugdrawdag << 'EOF' | ||||
> C B | ||||
> D |/ | ||||
> |/ | ||||
> A | ||||
> EOF | ||||
$ hg rebase --collapse -r 'B+C' -d D | ||||
rebasing 1:fc2b737bb2e5 "B" (B) | ||||
rebasing 2:dc0947a82db8 "C" (C) | ||||
saved backup bundle to $TESTTMP/multiple-bases/.hg/strip-backup/dc0947a82db8-b0c1a7ea-rebase.hg | ||||
$ hg tglog | ||||
o 2: 2127ae44d291 'Collapsed revision | ||||
| * B | ||||
| * C' | ||||
o 1: b18e25de2cf5 'D' | ||||
| | ||||
o 0: 426bada5c675 'A' | ||||
$ cd .. | ||||
With non-contiguous commits: | ||||
$ hg init non-contiguous | ||||
$ cd non-contiguous | ||||
$ cat >> .hg/hgrc <<EOF | ||||
> [experimental] | ||||
> evolution=all | ||||
> EOF | ||||
$ hg debugdrawdag << 'EOF' | ||||
> F | ||||
> | | ||||
> E | ||||
> | | ||||
> D | ||||
> | | ||||
> C | ||||
> | | ||||
> B G | ||||
> |/ | ||||
> A | ||||
> EOF | ||||
BROKEN: should be allowed | ||||
$ hg rebase --collapse -r 'B+D+F' -d G | ||||
abort: unable to collapse on top of 2, there is more than one external parent: 3, 5 | ||||
[255] | ||||
$ cd .. | ||||
$ hg init multiple-external-parents-2 | ||||
$ cd multiple-external-parents-2 | ||||
$ hg debugdrawdag << 'EOF' | ||||
> D G | ||||
> |\ /| | ||||
> B C E F | ||||
> \| |/ | ||||
> \ H / | ||||
> \|/ | ||||
> A | ||||
> EOF | ||||
$ hg rebase --collapse -d H -s 'B+F' | ||||
abort: unable to collapse on top of 5, there is more than one external parent: 1, 3 | ||||
[255] | ||||
$ cd .. | ||||
|
r12608 | |||
|
r37047 | With internal merge: | ||
|
r12608 | |||
|
r37047 | $ hg init internal-merge | ||
$ cd internal-merge | ||||
|
r12608 | |||
|
r37047 | $ hg debugdrawdag << 'EOF' | ||
> E | ||||
> |\ | ||||
> C D | ||||
> |/ | ||||
> F B | ||||
> |/ | ||||
> A | ||||
> EOF | ||||
|
r12608 | |||
|
r37047 | $ hg rebase -s B --collapse --dest F | ||
rebasing 1:112478962961 "B" (B) | ||||
rebasing 3:26805aba1e60 "C" (C) | ||||
rebasing 4:be0ef73c17ad "D" (D) | ||||
rebasing 5:02c4367d6973 "E" (E tip) | ||||
saved backup bundle to $TESTTMP/internal-merge/.hg/strip-backup/112478962961-1dfb057b-rebase.hg | ||||
|
r12608 | |||
$ hg tglog | ||||
|
r37047 | o 2: c0512a1797b0 'Collapsed revision | ||
|
r12608 | | * B | ||
| * C | ||||
| * D | ||||
| * E' | ||||
|
r37047 | o 1: 8908a377a434 'F' | ||
|
r12608 | | | ||
|
r37047 | o 0: 426bada5c675 'A' | ||
|
r12608 | |||
|
r19924 | $ hg manifest --rev tip | ||
|
r12608 | A | ||
B | ||||
C | ||||
D | ||||
F | ||||
|
r37047 | $ cd .. | ||
|
r12608 | |||
|
r14897 | Interactions between collapse and keepbranches | ||
$ hg init e | ||||
$ cd e | ||||
$ echo 'a' > a | ||||
$ hg ci -Am 'A' | ||||
adding a | ||||
|
r18566 | $ hg branch 'one' | ||
marked working directory as branch one | ||||
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
|
r14897 | $ echo 'b' > b | ||
$ hg ci -Am 'B' | ||||
adding b | ||||
|
r18566 | $ hg branch 'two' | ||
marked working directory as branch two | ||||
|
r14897 | $ echo 'c' > c | ||
$ hg ci -Am 'C' | ||||
adding c | ||||
$ hg up -q 0 | ||||
$ echo 'd' > d | ||||
$ hg ci -Am 'D' | ||||
adding d | ||||
$ hg tglog | ||||
|
r35386 | @ 3: 41acb9dca9eb 'D' | ||
|
r14897 | | | ||
|
r35386 | | o 2: 8ac4a08debf1 'C' two | ||
|
r14897 | | | | ||
|
r35386 | | o 1: 1ba175478953 'B' one | ||
|
r14897 | |/ | ||
|
r35386 | o 0: 1994f17a630e 'A' | ||
|
r14897 | |||
$ hg rebase --keepbranches --collapse -s 1 -d 3 | ||||
abort: cannot collapse multiple named branches | ||||
[255] | ||||
|
r15990 | $ repeatchange() { | ||
> hg checkout $1 | ||||
> hg cp d z | ||||
> echo blah >> z | ||||
> hg commit -Am "$2" --user "$3" | ||||
> } | ||||
$ repeatchange 3 "E" "user1" | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ repeatchange 3 "E" "user2" | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
created new head | ||||
$ hg tglog | ||||
|
r35386 | @ 5: fbfb97b1089a 'E' | ||
|
r15990 | | | ||
|
r35386 | | o 4: f338eb3c2c7c 'E' | ||
|
r15990 | |/ | ||
|
r35386 | o 3: 41acb9dca9eb 'D' | ||
|
r15990 | | | ||
|
r35386 | | o 2: 8ac4a08debf1 'C' two | ||
|
r15990 | | | | ||
|
r35386 | | o 1: 1ba175478953 'B' one | ||
|
r15990 | |/ | ||
|
r35386 | o 0: 1994f17a630e 'A' | ||
|
r15990 | |||
$ hg rebase -s 5 -d 4 | ||||
|
r23517 | rebasing 5:fbfb97b1089a "E" (tip) | ||
|
r40900 | note: not rebasing 5:fbfb97b1089a "E" (tip), its destination already has all its changes | ||
|
r35394 | saved backup bundle to $TESTTMP/e/.hg/strip-backup/fbfb97b1089a-553e1d85-rebase.hg | ||
|
r15990 | $ hg tglog | ||
|
r35386 | @ 4: f338eb3c2c7c 'E' | ||
|
r15990 | | | ||
|
r35386 | o 3: 41acb9dca9eb 'D' | ||
|
r15990 | | | ||
|
r35386 | | o 2: 8ac4a08debf1 'C' two | ||
|
r15990 | | | | ||
|
r35386 | | o 1: 1ba175478953 'B' one | ||
|
r15990 | |/ | ||
|
r35386 | o 0: 1994f17a630e 'A' | ||
|
r15990 | |||
$ hg export tip | ||||
# HG changeset patch | ||||
# User user1 | ||||
# Date 0 0 | ||||
|
r18648 | # Thu Jan 01 00:00:00 1970 +0000 | ||
|
r15990 | # Node ID f338eb3c2c7cc5b5915676a2376ba7ac558c5213 | ||
# Parent 41acb9dca9eb976e84cd21fcb756b4afa5a35c09 | ||||
E | ||||
diff -r 41acb9dca9eb -r f338eb3c2c7c z | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/z Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,2 @@ | ||||
+d | ||||
+blah | ||||
|
r16551 | |||
$ cd .. | ||||
Rebase, collapse and copies | ||||
$ hg init copies | ||||
$ cd copies | ||||
$ hg unbundle "$TESTDIR/bundles/renames.hg" | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 4 changesets with 11 changes to 7 files (+1 heads) | ||||
|
r39516 | new changesets f447d5abf5ea:338e84e2e558 (4 drafts) | ||
|
r16551 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg up -q tip | ||||
$ hg tglog | ||||
|
r35386 | @ 3: 338e84e2e558 'move2' | ||
|
r16551 | | | ||
|
r35386 | o 2: 6e7340ee38c0 'move1' | ||
|
r16551 | | | ||
|
r35386 | | o 1: 1352765a01d4 'change' | ||
|
r16551 | |/ | ||
|
r35386 | o 0: f447d5abf5ea 'add' | ||
|
r16551 | |||
$ hg rebase --collapse -d 1 | ||||
|
r23517 | rebasing 2:6e7340ee38c0 "move1" | ||
|
r16551 | merging a and d to d | ||
merging b and e to e | ||||
merging c and f to f | ||||
|
r23517 | rebasing 3:338e84e2e558 "move2" (tip) | ||
|
r20945 | merging f and c to c | ||
|
r16551 | merging e and g to g | ||
|
r35394 | saved backup bundle to $TESTTMP/copies/.hg/strip-backup/6e7340ee38c0-ef8ef003-rebase.hg | ||
|
r16551 | $ hg st | ||
|
r19924 | $ hg st --copies --change tip | ||
|
r16551 | A d | ||
a | ||||
A g | ||||
b | ||||
R b | ||||
|
r19924 | $ hg up tip -q | ||
|
r16551 | $ cat c | ||
c | ||||
c | ||||
$ cat d | ||||
a | ||||
a | ||||
$ cat g | ||||
b | ||||
b | ||||
$ hg log -r . --template "{file_copies}\n" | ||||
d (a)g (b) | ||||
|
r16696 | |||
Test collapsing a middle revision in-place | ||||
$ hg tglog | ||||
|
r35386 | @ 2: 64b456429f67 'Collapsed revision | ||
|
r16696 | | * move1 | ||
| * move2' | ||||
|
r35386 | o 1: 1352765a01d4 'change' | ||
|
r16696 | | | ||
|
r35386 | o 0: f447d5abf5ea 'add' | ||
|
r16696 | |||
$ hg rebase --collapse -r 1 -d 0 | ||||
abort: can't remove original changesets with unrebased descendants | ||||
(use --keep to keep original changesets) | ||||
[255] | ||||
Test collapsing in place | ||||
$ hg rebase --collapse -b . -d 0 | ||||
|
r23517 | rebasing 1:1352765a01d4 "change" | ||
rebasing 2:64b456429f67 "Collapsed revision" (tip) | ||||
|
r35394 | saved backup bundle to $TESTTMP/copies/.hg/strip-backup/1352765a01d4-45a352ea-rebase.hg | ||
|
r19924 | $ hg st --change tip --copies | ||
|
r16696 | M a | ||
M c | ||||
A d | ||||
a | ||||
A g | ||||
b | ||||
R b | ||||
|
r19924 | $ hg up tip -q | ||
|
r16696 | $ cat a | ||
a | ||||
a | ||||
$ cat c | ||||
c | ||||
c | ||||
$ cat d | ||||
a | ||||
a | ||||
$ cat g | ||||
b | ||||
b | ||||
|
r16551 | $ cd .. | ||
|
r17013 | |||
Test stripping a revision with another child | ||||
$ hg init f | ||||
$ cd f | ||||
|
r37047 | $ hg debugdrawdag << 'EOF' | ||
> C B | ||||
> |/ | ||||
> A | ||||
> EOF | ||||
|
r17013 | |||
|
r37047 | $ hg heads --template="{rev}:{node} {branch}: {desc}\n" | ||
2:dc0947a82db884575bb76ea10ac97b08536bfa03 default: C | ||||
1:112478962961147124edd43549aedd1a335e44bf default: B | ||||
|
r17013 | |||
|
r37047 | $ hg strip C | ||
saved backup bundle to $TESTTMP/f/.hg/strip-backup/dc0947a82db8-d21b92a4-backup.hg | ||||
|
r17013 | |||
$ hg tglog | ||||
|
r37047 | o 1: 112478962961 'B' | ||
|
r17013 | | | ||
|
r37047 | o 0: 426bada5c675 'A' | ||
|
r17013 | |||
$ hg heads --template="{rev}:{node} {branch}: {desc}\n" | ||||
|
r37047 | 1:112478962961147124edd43549aedd1a335e44bf default: B | ||
|
r17013 | |||
$ cd .. | ||||
|
r18778 | Test collapsing changes that add then remove a file | ||
|
r17013 | |||
|
r18778 | $ hg init collapseaddremove | ||
$ cd collapseaddremove | ||||
|
r17013 | |||
|
r18778 | $ touch base | ||
$ hg commit -Am base | ||||
adding base | ||||
$ touch a | ||||
$ hg commit -Am a | ||||
adding a | ||||
$ hg rm a | ||||
$ touch b | ||||
$ hg commit -Am b | ||||
adding b | ||||
|
r19986 | $ hg book foo | ||
|
r18778 | $ hg rebase -d 0 -r "1::2" --collapse -m collapsed | ||
|
r23517 | rebasing 1:6d8d9f24eec3 "a" | ||
|
r34291 | rebasing 2:1cc73eca5ecc "b" (foo tip) | ||
|
r35394 | saved backup bundle to $TESTTMP/collapseaddremove/.hg/strip-backup/6d8d9f24eec3-77d3b6e2-rebase.hg | ||
|
r19986 | $ hg log -G --template "{rev}: '{desc}' {bookmarks}" | ||
@ 1: 'collapsed' foo | ||||
|
r18778 | | | ||
|
r19986 | o 0: 'base' | ||
|
r18778 | |||
|
r19924 | $ hg manifest --rev tip | ||
|
r18778 | b | ||
base | ||||
|
r17013 | |||
|
r18778 | $ cd .. | ||
|
r28185 | |||
Test that rebase --collapse will remember message after | ||||
running into merge conflict and invoking rebase --continue. | ||||
$ hg init collapse_remember_message | ||||
$ cd collapse_remember_message | ||||
|
r37047 | $ hg debugdrawdag << 'EOF' | ||
> C B # B/A = B\n | ||||
> |/ # C/A = C\n | ||||
> A | ||||
> EOF | ||||
$ hg rebase --collapse -m "new message" -b B -d C | ||||
rebasing 1:81e5401e4d37 "B" (B) | ||||
merging A | ||||
warning: conflicts while merging A! (edit, then use 'hg resolve --mark') | ||||
|
r28185 | unresolved conflicts (see hg resolve, then hg rebase --continue) | ||
[1] | ||||
|
r37047 | $ rm A.orig | ||
$ hg resolve --mark A | ||||
|
r28185 | (no more unresolved files) | ||
continue: hg rebase --continue | ||||
$ hg rebase --continue | ||||
|
r37047 | rebasing 1:81e5401e4d37 "B" (B) | ||
saved backup bundle to $TESTTMP/collapse_remember_message/.hg/strip-backup/81e5401e4d37-96c3dd30-rebase.hg | ||||
|
r28185 | $ hg log | ||
|
r37047 | changeset: 2:17186933e123 | ||
|
r28185 | tag: tip | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r37047 | summary: new message | ||
|
r28185 | |||
|
r37047 | changeset: 1:043039e9df84 | ||
tag: C | ||||
|
r28185 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r37047 | summary: C | ||
|
r28185 | |||
|
r37047 | changeset: 0:426bada5c675 | ||
tag: A | ||||
|
r28185 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r37047 | summary: A | ||
|
r28185 | |||
$ cd .. | ||||
|
r37048 | |||
Test aborted editor on final message | ||||
$ HGMERGE=:merge3 | ||||
$ export HGMERGE | ||||
$ hg init aborted-editor | ||||
$ cd aborted-editor | ||||
$ hg debugdrawdag << 'EOF' | ||||
> C # D/A = D\n | ||||
> | # C/A = C\n | ||||
> B D # B/A = B\n | ||||
> |/ # A/A = A\n | ||||
> A | ||||
> EOF | ||||
$ hg rebase --collapse -t internal:merge3 -s B -d D | ||||
rebasing 1:f899f3910ce7 "B" (B) | ||||
merging A | ||||
warning: conflicts while merging A! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see hg resolve, then hg rebase --continue) | ||||
[1] | ||||
$ hg tglog | ||||
o 3: 63668d570d21 'C' | ||||
| | ||||
| @ 2: 82b8abf9c185 'D' | ||||
| | | ||||
@ | 1: f899f3910ce7 'B' | ||||
|/ | ||||
o 0: 4a2df7238c3b 'A' | ||||
$ cat A | ||||
<<<<<<< dest: 82b8abf9c185 D - test: D | ||||
D | ||||
||||||| base | ||||
A | ||||
======= | ||||
B | ||||
>>>>>>> source: f899f3910ce7 B - test: B | ||||
$ echo BC > A | ||||
$ hg resolve -m | ||||
(no more unresolved files) | ||||
continue: hg rebase --continue | ||||
$ hg rebase --continue | ||||
rebasing 1:f899f3910ce7 "B" (B) | ||||
rebasing 3:63668d570d21 "C" (C tip) | ||||
merging A | ||||
warning: conflicts while merging A! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see hg resolve, then hg rebase --continue) | ||||
[1] | ||||
$ hg tglog | ||||
@ 3: 63668d570d21 'C' | ||||
| | ||||
| @ 2: 82b8abf9c185 'D' | ||||
| | | ||||
o | 1: f899f3910ce7 'B' | ||||
|/ | ||||
o 0: 4a2df7238c3b 'A' | ||||
$ cat A | ||||
<<<<<<< dest: 82b8abf9c185 D - test: D | ||||
BC | ||||
||||||| base | ||||
B | ||||
======= | ||||
C | ||||
>>>>>>> source: 63668d570d21 C tip - test: C | ||||
$ echo BD > A | ||||
$ hg resolve -m | ||||
(no more unresolved files) | ||||
continue: hg rebase --continue | ||||
$ HGEDITOR=false hg rebase --continue --config ui.interactive=1 | ||||
already rebased 1:f899f3910ce7 "B" (B) as 82b8abf9c185 | ||||
rebasing 3:63668d570d21 "C" (C tip) | ||||
abort: edit failed: false exited with status 1 | ||||
[255] | ||||
$ hg tglog | ||||
o 3: 63668d570d21 'C' | ||||
| | ||||
| @ 2: 82b8abf9c185 'D' | ||||
| | | ||||
o | 1: f899f3910ce7 'B' | ||||
|/ | ||||
o 0: 4a2df7238c3b 'A' | ||||
$ hg rebase --continue | ||||
already rebased 1:f899f3910ce7 "B" (B) as 82b8abf9c185 | ||||
|
r37050 | already rebased 3:63668d570d21 "C" (C tip) as 82b8abf9c185 | ||
saved backup bundle to $TESTTMP/aborted-editor/.hg/strip-backup/f899f3910ce7-7cab5e15-rebase.hg | ||||