test-rebase-interruptions.t
480 lines
| 10.2 KiB
| text/troff
|
Tads3Lexer
/ tests / test-rebase-interruptions.t
|
r12608 | $ cat >> $HGRCPATH <<EOF | ||
> [extensions] | ||||
> rebase= | ||||
> | ||||
|
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 | ||
$ 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 | ||||
|
r35386 | @ 4: ae36e8e3dfd7 'E' | ||
|
r12608 | | | ||
|
r35386 | o 3: 46b37eabc604 'D' | ||
|
r12608 | | | ||
|
r35386 | | o 2: 965c486023db 'C' | ||
|
r12608 | | | | ||
|
r35386 | | o 1: 27547f69f254 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: 4a2df7238c3b 'A' | ||
|
r12608 | |||
Rebasing B onto E: | ||||
$ hg rebase -s 1 -d 4 | ||||
|
r23517 | rebasing 1:27547f69f254 "B" | ||
rebasing 2:965c486023db "C" | ||||
|
r12608 | merging A | ||
|
r26614 | warning: conflicts while merging A! (edit, 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 | ||||
|
r35386 | @ 6: deb5d2f93d8b secret 'Extra' | ||
|
r12608 | | | ||
|
r35386 | | o 5: 45396c49d53b draft 'B' | ||
|
r12608 | | | | ||
|
r35386 | | o 4: ae36e8e3dfd7 draft 'E' | ||
|
r12608 | | | | ||
|
r35386 | | o 3: 46b37eabc604 draft 'D' | ||
|
r12608 | | | | ||
|
r35386 | o | 2: 965c486023db draft 'C' | ||
|
r15917 | | | | ||
|
r35386 | o | 1: 27547f69f254 draft 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: 4a2df7238c3b draft 'A' | ||
|
r12608 | |||
Resume the rebasing: | ||||
$ hg rebase --continue | ||||
|
r23517 | already rebased 1:27547f69f254 "B" as 45396c49d53b | ||
rebasing 2:965c486023db "C" | ||||
|
r12608 | merging A | ||
|
r26614 | warning: conflicts while merging A! (edit, 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) | ||
|
r27626 | continue: hg rebase --continue | ||
|
r12608 | |||
$ hg rebase --continue | ||||
|
r23517 | already rebased 1:27547f69f254 "B" as 45396c49d53b | ||
rebasing 2:965c486023db "C" | ||||
|
r33332 | warning: orphaned descendants detected, not stripping 27547f69f254, 965c486023db | ||
|
r12608 | |||
|
r15917 | $ hg tglogp | ||
|
r35386 | o 7: d2d25e26288e draft 'C' | ||
|
r12608 | | | ||
|
r35386 | | o 6: deb5d2f93d8b secret 'Extra' | ||
|
r12608 | | | | ||
|
r35386 | o | 5: 45396c49d53b draft 'B' | ||
|
r12608 | | | | ||
|
r35386 | @ | 4: ae36e8e3dfd7 draft 'E' | ||
|
r12608 | | | | ||
|
r35386 | o | 3: 46b37eabc604 draft 'D' | ||
|
r12608 | | | | ||
|
r35386 | | o 2: 965c486023db draft 'C' | ||
|
r12608 | | | | ||
|
r35386 | | o 1: 27547f69f254 draft 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: 4a2df7238c3b draft 'A' | ||
|
r12608 | |||
$ cd .. | ||||
Changes during an interruption - abort: | ||||
$ hg clone -q -u . a a2 | ||||
$ cd a2 | ||||
$ hg tglog | ||||
|
r35386 | @ 4: ae36e8e3dfd7 'E' | ||
|
r12608 | | | ||
|
r35386 | o 3: 46b37eabc604 'D' | ||
|
r12608 | | | ||
|
r35386 | | o 2: 965c486023db 'C' | ||
|
r12608 | | | | ||
|
r35386 | | o 1: 27547f69f254 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: 4a2df7238c3b 'A' | ||
|
r12608 | |||
Rebasing B onto E: | ||||
$ hg rebase -s 1 -d 4 | ||||
|
r23517 | rebasing 1:27547f69f254 "B" | ||
rebasing 2:965c486023db "C" | ||||
|
r12608 | merging A | ||
|
r26614 | warning: conflicts while merging A! (edit, 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 | ||||
|
r35386 | @ 6: 402ee3642b59 'Extra' | ||
|
r12608 | | | ||
|
r35386 | o 5: 45396c49d53b 'B' | ||
|
r12608 | | | ||
|
r35386 | o 4: ae36e8e3dfd7 'E' | ||
|
r12608 | | | ||
|
r35386 | o 3: 46b37eabc604 'D' | ||
|
r12608 | | | ||
|
r35386 | | o 2: 965c486023db 'C' | ||
|
r12608 | | | | ||
|
r35386 | | o 1: 27547f69f254 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: 4a2df7238c3b 'A' | ||
|
r12608 | |||
Abort the rebasing: | ||||
$ hg rebase --abort | ||||
|
r32249 | warning: new changesets detected on destination branch, can't strip | ||
|
r19518 | rebase aborted | ||
|
r12608 | |||
$ hg tglog | ||||
|
r35386 | @ 6: 402ee3642b59 'Extra' | ||
|
r12608 | | | ||
|
r35386 | o 5: 45396c49d53b 'B' | ||
|
r12608 | | | ||
|
r35386 | o 4: ae36e8e3dfd7 'E' | ||
|
r12608 | | | ||
|
r35386 | o 3: 46b37eabc604 'D' | ||
|
r12608 | | | ||
|
r35386 | | o 2: 965c486023db 'C' | ||
|
r12608 | | | | ||
|
r35386 | | o 1: 27547f69f254 'B' | ||
|
r12608 | |/ | ||
|
r35386 | o 0: 4a2df7238c3b 'A' | ||
|
r12608 | |||
$ cd .. | ||||
|
r15917 | Changes during an interruption - abort (again): | ||
$ hg clone -q -u . a a3 | ||||
$ cd a3 | ||||
$ hg tglogp | ||||
|
r35386 | @ 4: ae36e8e3dfd7 draft 'E' | ||
|
r15917 | | | ||
|
r35386 | o 3: 46b37eabc604 draft 'D' | ||
|
r15917 | | | ||
|
r35386 | | o 2: 965c486023db draft 'C' | ||
|
r15917 | | | | ||
|
r35386 | | o 1: 27547f69f254 draft 'B' | ||
|
r15917 | |/ | ||
|
r35386 | o 0: 4a2df7238c3b draft 'A' | ||
|
r15917 | |||
Rebasing B onto E: | ||||
$ hg rebase -s 1 -d 4 | ||||
|
r23517 | rebasing 1:27547f69f254 "B" | ||
rebasing 2:965c486023db "C" | ||||
|
r15917 | merging A | ||
|
r26614 | warning: conflicts while merging A! (edit, 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 | ||||
|
r35386 | @ 5: 45396c49d53b public 'B' | ||
|
r15917 | | | ||
|
r35386 | o 4: ae36e8e3dfd7 public 'E' | ||
|
r15917 | | | ||
|
r35386 | o 3: 46b37eabc604 public 'D' | ||
|
r15917 | | | ||
|
r35386 | | o 2: 965c486023db secret 'C' | ||
|
r15917 | | | | ||
|
r35386 | | o 1: 27547f69f254 public 'B' | ||
|
r15917 | |/ | ||
|
r35386 | o 0: 4a2df7238c3b public 'A' | ||
|
r15917 | |||
Abort the rebasing: | ||||
$ hg rebase --abort | ||||
|
r25411 | warning: can't clean up public changesets 45396c49d53b | ||
|
r19517 | rebase aborted | ||
|
r15917 | |||
$ hg tglogp | ||||
|
r35386 | @ 5: 45396c49d53b public 'B' | ||
|
r15917 | | | ||
|
r35386 | o 4: ae36e8e3dfd7 public 'E' | ||
|
r15917 | | | ||
|
r35386 | o 3: 46b37eabc604 public 'D' | ||
|
r15917 | | | ||
|
r35386 | | o 2: 965c486023db secret 'C' | ||
|
r15917 | | | | ||
|
r35386 | | o 1: 27547f69f254 public 'B' | ||
|
r15917 | |/ | ||
|
r35386 | o 0: 4a2df7238c3b public 'A' | ||
|
r15917 | |||
r33138 | Test rebase interrupted by hooks | |||
r33137 | ||||
$ hg up 2 | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo F > F | ||||
$ hg add F | ||||
$ hg ci -m F | ||||
r33138 | ||||
$ cd .. | ||||
(precommit version) | ||||
$ cp -R a3 hook-precommit | ||||
$ cd hook-precommit | ||||
$ hg rebase --source 2 --dest 5 --tool internal:other --config 'hooks.precommit=hg status | grep "M A"' | ||||
rebasing 2:965c486023db "C" | ||||
M A | ||||
rebasing 6:a0b2430ebfb8 "F" (tip) | ||||
abort: precommit hook exited with status 1 | ||||
[255] | ||||
$ hg tglogp | ||||
|
r35386 | @ 7: 401ccec5e39f secret 'C' | ||
r33138 | | | |||
|
r35386 | | @ 6: a0b2430ebfb8 secret 'F' | ||
r33138 | | | | |||
|
r35386 | o | 5: 45396c49d53b public 'B' | ||
r33138 | | | | |||
|
r35386 | o | 4: ae36e8e3dfd7 public 'E' | ||
r33138 | | | | |||
|
r35386 | o | 3: 46b37eabc604 public 'D' | ||
r33138 | | | | |||
|
r35386 | | o 2: 965c486023db secret 'C' | ||
r33138 | | | | |||
|
r35386 | | o 1: 27547f69f254 public 'B' | ||
r33138 | |/ | |||
|
r35386 | o 0: 4a2df7238c3b public 'A' | ||
r33138 | ||||
$ hg rebase --continue | ||||
already rebased 2:965c486023db "C" as 401ccec5e39f | ||||
rebasing 6:a0b2430ebfb8 "F" | ||||
|
r35394 | saved backup bundle to $TESTTMP/hook-precommit/.hg/strip-backup/965c486023db-aa6250e7-rebase.hg | ||
r33138 | $ hg tglogp | |||
|
r35386 | @ 6: 6e92a149ac6b secret 'F' | ||
r33138 | | | |||
|
r35386 | o 5: 401ccec5e39f secret 'C' | ||
r33138 | | | |||
|
r35386 | o 4: 45396c49d53b public 'B' | ||
r33138 | | | |||
|
r35386 | o 3: ae36e8e3dfd7 public 'E' | ||
r33138 | | | |||
|
r35386 | o 2: 46b37eabc604 public 'D' | ||
r33138 | | | |||
|
r35386 | | o 1: 27547f69f254 public 'B' | ||
r33138 | |/ | |||
|
r35386 | o 0: 4a2df7238c3b public 'A' | ||
r33138 | ||||
$ cd .. | ||||
(pretxncommit version) | ||||
$ cp -R a3 hook-pretxncommit | ||||
$ cd hook-pretxncommit | ||||
|
r38745 | $ hg rebase --source 2 --dest 5 --tool internal:other \ | ||
> --config 'hooks.tonative.pretxncommit=True' --config 'hooks.pretxncommit=hg log -r $HG_NODE | grep "summary: C"' | ||||
r33137 | rebasing 2:965c486023db "C" | |||
summary: C | ||||
rebasing 6:a0b2430ebfb8 "F" (tip) | ||||
transaction abort! | ||||
rollback completed | ||||
abort: pretxncommit hook exited with status 1 | ||||
[255] | ||||
$ hg tglogp | ||||
|
r35386 | @ 7: 401ccec5e39f secret 'C' | ||
r33137 | | | |||
|
r35386 | | @ 6: a0b2430ebfb8 secret 'F' | ||
r33137 | | | | |||
|
r35386 | o | 5: 45396c49d53b public 'B' | ||
r33137 | | | | |||
|
r35386 | o | 4: ae36e8e3dfd7 public 'E' | ||
r33137 | | | | |||
|
r35386 | o | 3: 46b37eabc604 public 'D' | ||
r33137 | | | | |||
|
r35386 | | o 2: 965c486023db secret 'C' | ||
r33137 | | | | |||
|
r35386 | | o 1: 27547f69f254 public 'B' | ||
r33137 | |/ | |||
|
r35386 | o 0: 4a2df7238c3b public 'A' | ||
r33137 | ||||
$ hg rebase --continue | ||||
already rebased 2:965c486023db "C" as 401ccec5e39f | ||||
rebasing 6:a0b2430ebfb8 "F" | ||||
|
r35394 | saved backup bundle to $TESTTMP/hook-pretxncommit/.hg/strip-backup/965c486023db-aa6250e7-rebase.hg | ||
r33137 | $ hg tglogp | |||
|
r35386 | @ 6: 6e92a149ac6b secret 'F' | ||
r33137 | | | |||
|
r35386 | o 5: 401ccec5e39f secret 'C' | ||
r33137 | | | |||
|
r35386 | o 4: 45396c49d53b public 'B' | ||
r33137 | | | |||
|
r35386 | o 3: ae36e8e3dfd7 public 'E' | ||
r33137 | | | |||
|
r35386 | o 2: 46b37eabc604 public 'D' | ||
r33137 | | | |||
|
r35386 | | o 1: 27547f69f254 public 'B' | ||
r33137 | |/ | |||
|
r35386 | o 0: 4a2df7238c3b public 'A' | ||
r33137 | ||||
|
r15917 | $ cd .. | ||
r33139 | ||||
(pretxnclose version) | ||||
$ cp -R a3 hook-pretxnclose | ||||
$ cd hook-pretxnclose | ||||
$ hg rebase --source 2 --dest 5 --tool internal:other --config 'hooks.pretxnclose=hg log -r tip | grep "summary: C"' | ||||
rebasing 2:965c486023db "C" | ||||
summary: C | ||||
rebasing 6:a0b2430ebfb8 "F" (tip) | ||||
transaction abort! | ||||
rollback completed | ||||
abort: pretxnclose hook exited with status 1 | ||||
[255] | ||||
$ hg tglogp | ||||
|
r35386 | @ 7: 401ccec5e39f secret 'C' | ||
r33139 | | | |||
|
r35386 | | @ 6: a0b2430ebfb8 secret 'F' | ||
r33139 | | | | |||
|
r35386 | o | 5: 45396c49d53b public 'B' | ||
r33139 | | | | |||
|
r35386 | o | 4: ae36e8e3dfd7 public 'E' | ||
r33139 | | | | |||
|
r35386 | o | 3: 46b37eabc604 public 'D' | ||
r33139 | | | | |||
|
r35386 | | o 2: 965c486023db secret 'C' | ||
r33139 | | | | |||
|
r35386 | | o 1: 27547f69f254 public 'B' | ||
r33139 | |/ | |||
|
r35386 | o 0: 4a2df7238c3b public 'A' | ||
r33139 | ||||
$ hg rebase --continue | ||||
already rebased 2:965c486023db "C" as 401ccec5e39f | ||||
rebasing 6:a0b2430ebfb8 "F" | ||||
|
r35394 | saved backup bundle to $TESTTMP/hook-pretxnclose/.hg/strip-backup/965c486023db-aa6250e7-rebase.hg | ||
r33139 | $ hg tglogp | |||
|
r35386 | @ 6: 6e92a149ac6b secret 'F' | ||
r33139 | | | |||
|
r35386 | o 5: 401ccec5e39f secret 'C' | ||
r33139 | | | |||
|
r35386 | o 4: 45396c49d53b public 'B' | ||
r33139 | | | |||
|
r35386 | o 3: ae36e8e3dfd7 public 'E' | ||
r33139 | | | |||
|
r35386 | o 2: 46b37eabc604 public 'D' | ||
r33139 | | | |||
|
r35386 | | o 1: 27547f69f254 public 'B' | ||
r33139 | |/ | |||
|
r35386 | o 0: 4a2df7238c3b public 'A' | ||
r33139 | ||||
$ cd .. | ||||
|
r32313 | |||
Make sure merge state is cleaned up after a no-op rebase merge (issue5494) | ||||
$ hg init repo | ||||
$ cd repo | ||||
$ echo a > a | ||||
$ hg commit -qAm base | ||||
$ echo b >> a | ||||
$ hg commit -qm b | ||||
$ hg up '.^' | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo c >> a | ||||
$ hg commit -qm c | ||||
$ hg rebase -s 1 -d 2 --noninteractive | ||||
rebasing 1:fdaca8533b86 "b" | ||||
merging a | ||||
warning: conflicts while merging a! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see hg resolve, then hg rebase --continue) | ||||
[1] | ||||
$ echo a > a | ||||
$ echo c >> a | ||||
$ hg resolve --mark a | ||||
(no more unresolved files) | ||||
continue: hg rebase --continue | ||||
$ hg rebase --continue | ||||
rebasing 1:fdaca8533b86 "b" | ||||
note: rebase of 1:fdaca8533b86 created no changes to commit | ||||
|
r35394 | saved backup bundle to $TESTTMP/repo/.hg/strip-backup/fdaca8533b86-7fd70513-rebase.hg | ||
|
r32313 | $ hg resolve --list | ||
|
r36794 | $ test -d .hg/merge | ||
|
r32313 | [1] | ||
|
r36795 | Now try again with --collapse | ||
$ hg unbundle -q .hg/strip-backup/fdaca8533b86-7fd70513-rebase.hg | ||||
$ hg rebase -s 2 -d 1 --noninteractive --collapse | ||||
rebasing 2:fdaca8533b86 "b" (tip) | ||||
merging a | ||||
warning: conflicts while merging a! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see hg resolve, then hg rebase --continue) | ||||
[1] | ||||
$ echo a > a | ||||
$ echo c >> a | ||||
$ hg resolve --mark a | ||||
(no more unresolved files) | ||||
continue: hg rebase --continue | ||||
$ hg rebase --continue | ||||
rebasing 2:fdaca8533b86 "b" (tip) | ||||
saved backup bundle to $TESTTMP/repo/.hg/strip-backup/fdaca8533b86-7fd70513-rebase.hg | ||||
$ hg resolve --list | ||||
$ test -d .hg/merge | ||||
|
r36946 | [1] | ||