test-rebase-interruptions.t
267 lines
| 4.0 KiB
| text/troff
|
Tads3Lexer
/ tests / test-rebase-interruptions.t
|
r12608 | $ cat >> $HGRCPATH <<EOF | ||
> [extensions] | ||||
> rebase= | ||||
> | ||||
|
r15742 | > [phases] | ||
> publish=False | ||||
> | ||||
|
r12608 | > [alias] | ||
> tglog = log -G --template "{rev}: '{desc}' {branches}\n" | ||||
|
r15917 | > tglogp = log -G --template "{rev}:{phase} '{desc}' {branches}\n" | ||
|
r12608 | > EOF | ||
$ hg init a | ||||
$ cd a | ||||
$ echo A > A | ||||
$ hg ci -Am A | ||||
adding A | ||||
$ echo B > B | ||||
$ hg ci -Am B | ||||
adding B | ||||
$ echo C >> A | ||||
$ hg ci -m C | ||||
$ hg up -q -C 0 | ||||
$ echo D >> A | ||||
$ hg ci -m D | ||||
created new head | ||||
$ echo E > E | ||||
$ hg ci -Am E | ||||
adding E | ||||
$ cd .. | ||||
Changes during an interruption - continue: | ||||
$ hg clone -q -u . a a1 | ||||
$ cd a1 | ||||
$ hg tglog | ||||
@ 4: 'E' | ||||
| | ||||
o 3: 'D' | ||||
| | ||||
| o 2: 'C' | ||||
| | | ||||
| o 1: 'B' | ||||
|/ | ||||
o 0: 'A' | ||||
Rebasing B onto E: | ||||
$ hg rebase -s 1 -d 4 | ||||
merging A | ||||
warning: conflicts during merge. | ||||
|
r15501 | merging A incomplete! (edit conflicts, then use 'hg resolve --mark') | ||
|
r18933 | unresolved conflicts (see hg resolve, then hg rebase --continue) | ||
|
r18935 | [1] | ||
|
r12608 | |||
Force a commit on C during the interruption: | ||||
|
r19478 | $ hg up -q -C 2 --config 'extensions.rebase=!' | ||
|
r12608 | |||
$ echo 'Extra' > Extra | ||||
$ hg add Extra | ||||
|
r19478 | $ hg ci -m 'Extra' --config 'extensions.rebase=!' | ||
|
r12608 | |||
|
r15917 | Force this commit onto secret phase | ||
$ hg phase --force --secret 6 | ||||
$ hg tglogp | ||||
@ 6:secret 'Extra' | ||||
|
r12608 | | | ||
|
r15917 | | o 5:draft 'B' | ||
|
r12608 | | | | ||
|
r15917 | | o 4:draft 'E' | ||
|
r12608 | | | | ||
|
r15917 | | o 3:draft 'D' | ||
|
r12608 | | | | ||
|
r15917 | o | 2:draft 'C' | ||
| | | ||||
o | 1:draft 'B' | ||||
|
r12608 | |/ | ||
|
r15917 | o 0:draft 'A' | ||
|
r12608 | |||
Resume the rebasing: | ||||
$ hg rebase --continue | ||||
merging A | ||||
warning: conflicts during merge. | ||||
|
r15501 | merging A incomplete! (edit conflicts, then use 'hg resolve --mark') | ||
|
r18933 | unresolved conflicts (see hg resolve, then hg rebase --continue) | ||
|
r18935 | [1] | ||
|
r12608 | |||
Solve the conflict and go on: | ||||
$ echo 'conflict solved' > A | ||||
$ rm A.orig | ||||
$ hg resolve -m A | ||||
|
r21947 | (no more unresolved files) | ||
|
r12608 | |||
$ hg rebase --continue | ||||
warning: new changesets detected on source branch, not stripping | ||||
|
r15917 | $ hg tglogp | ||
|
r19925 | o 7:draft 'C' | ||
|
r12608 | | | ||
|
r15917 | | o 6:secret 'Extra' | ||
|
r12608 | | | | ||
|
r15917 | o | 5:draft 'B' | ||
|
r12608 | | | | ||
|
r19925 | @ | 4:draft 'E' | ||
|
r12608 | | | | ||
|
r15917 | o | 3:draft 'D' | ||
|
r12608 | | | | ||
|
r15917 | | o 2:draft 'C' | ||
|
r12608 | | | | ||
|
r15917 | | o 1:draft 'B' | ||
|
r12608 | |/ | ||
|
r15917 | o 0:draft 'A' | ||
|
r12608 | |||
$ cd .. | ||||
Changes during an interruption - abort: | ||||
$ hg clone -q -u . a a2 | ||||
$ cd a2 | ||||
$ hg tglog | ||||
@ 4: 'E' | ||||
| | ||||
o 3: 'D' | ||||
| | ||||
| o 2: 'C' | ||||
| | | ||||
| o 1: 'B' | ||||
|/ | ||||
o 0: 'A' | ||||
Rebasing B onto E: | ||||
$ hg rebase -s 1 -d 4 | ||||
merging A | ||||
warning: conflicts during merge. | ||||
|
r15501 | merging A incomplete! (edit conflicts, then use 'hg resolve --mark') | ||
|
r18933 | unresolved conflicts (see hg resolve, then hg rebase --continue) | ||
|
r18935 | [1] | ||
|
r12608 | |||
Force a commit on B' during the interruption: | ||||
|
r19478 | $ hg up -q -C 5 --config 'extensions.rebase=!' | ||
|
r12608 | |||
$ echo 'Extra' > Extra | ||||
$ hg add Extra | ||||
|
r19478 | $ hg ci -m 'Extra' --config 'extensions.rebase=!' | ||
|
r12608 | |||
$ hg tglog | ||||
@ 6: 'Extra' | ||||
| | ||||
o 5: 'B' | ||||
| | ||||
o 4: 'E' | ||||
| | ||||
o 3: 'D' | ||||
| | ||||
| o 2: 'C' | ||||
| | | ||||
| o 1: 'B' | ||||
|/ | ||||
o 0: 'A' | ||||
Abort the rebasing: | ||||
$ hg rebase --abort | ||||
|
r19518 | warning: new changesets detected on target branch, can't strip | ||
rebase aborted | ||||
|
r12608 | |||
$ hg tglog | ||||
@ 6: 'Extra' | ||||
| | ||||
o 5: 'B' | ||||
| | ||||
o 4: 'E' | ||||
| | ||||
o 3: 'D' | ||||
| | ||||
| o 2: 'C' | ||||
| | | ||||
| o 1: 'B' | ||||
|/ | ||||
o 0: 'A' | ||||
$ cd .. | ||||
|
r15917 | Changes during an interruption - abort (again): | ||
$ hg clone -q -u . a a3 | ||||
$ cd a3 | ||||
$ hg tglogp | ||||
@ 4:draft 'E' | ||||
| | ||||
o 3:draft 'D' | ||||
| | ||||
| o 2:draft 'C' | ||||
| | | ||||
| o 1:draft 'B' | ||||
|/ | ||||
o 0:draft 'A' | ||||
Rebasing B onto E: | ||||
$ hg rebase -s 1 -d 4 | ||||
merging A | ||||
warning: conflicts during merge. | ||||
merging A incomplete! (edit conflicts, then use 'hg resolve --mark') | ||||
|
r18933 | unresolved conflicts (see hg resolve, then hg rebase --continue) | ||
|
r18935 | [1] | ||
|
r15917 | |||
Change phase on B and B' | ||||
|
r19478 | $ hg up -q -C 5 --config 'extensions.rebase=!' | ||
|
r15917 | $ hg phase --public 1 | ||
$ hg phase --public 5 | ||||
$ hg phase --secret -f 2 | ||||
$ hg tglogp | ||||
@ 5:public 'B' | ||||
| | ||||
o 4:public 'E' | ||||
| | ||||
o 3:public 'D' | ||||
| | ||||
| o 2:secret 'C' | ||||
| | | ||||
| o 1:public 'B' | ||||
|/ | ||||
o 0:public 'A' | ||||
Abort the rebasing: | ||||
$ hg rebase --abort | ||||
|
r19517 | warning: can't clean up immutable changesets 45396c49d53b | ||
rebase aborted | ||||
|
r15917 | |||
$ hg tglogp | ||||
@ 5:public 'B' | ||||
| | ||||
o 4:public 'E' | ||||
| | ||||
o 3:public 'D' | ||||
| | ||||
| o 2:secret 'C' | ||||
| | | ||||
| o 1:public 'B' | ||||
|/ | ||||
o 0:public 'A' | ||||
$ cd .. | ||||