test-rebase-obsolete4.t
501 lines
| 11.5 KiB
| text/troff
|
Tads3Lexer
/ tests / test-rebase-obsolete4.t
Martin von Zweigbergk
|
r47585 | ========================== | ||
Test rebase with obsolete | ||||
========================== | ||||
Enable obsolete | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [command-templates] | ||||
> log= {rev}:{node|short} {desc|firstline}{if(obsolete,' ({obsfate})')} | ||||
> [experimental] | ||||
> evolution.createmarkers=True | ||||
> evolution.allowunstable=True | ||||
> [phases] | ||||
> publish=False | ||||
> [extensions] | ||||
> rebase= | ||||
> drawdag=$TESTDIR/drawdag.py | ||||
> strip= | ||||
> EOF | ||||
Test that bookmark is moved and working dir is updated when all changesets have | ||||
equivalents in destination | ||||
$ hg init rbsrepo && cd rbsrepo | ||||
$ echo "[experimental]" > .hg/hgrc | ||||
$ echo "evolution=true" >> .hg/hgrc | ||||
$ echo root > root && hg ci -Am root | ||||
adding root | ||||
$ echo a > a && hg ci -Am a | ||||
adding a | ||||
$ hg up 0 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo b > b && hg ci -Am b | ||||
adding b | ||||
created new head | ||||
$ hg rebase -r 2 -d 1 | ||||
rebasing 2:1e9a3c00cbe9 tip "b" | ||||
$ hg log -r . # working dir is at rev 3 (successor of 2) | ||||
3:be1832deae9a b (no-eol) | ||||
$ hg book -r 2 mybook --hidden # rev 2 has a bookmark on it now | ||||
bookmarking hidden changeset 1e9a3c00cbe9 | ||||
(hidden revision '1e9a3c00cbe9' was rewritten as: be1832deae9a) | ||||
$ hg up 2 && hg log -r . # working dir is at rev 2 again | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
2:1e9a3c00cbe9 b (rewritten using rebase as 3:be1832deae9a) (no-eol) | ||||
$ hg rebase -r 2 -d 3 --config experimental.evolution.track-operation=1 | ||||
note: not rebasing 2:1e9a3c00cbe9 mybook "b", already in destination as 3:be1832deae9a tip "b" | ||||
Check that working directory and bookmark was updated to rev 3 although rev 2 | ||||
was skipped | ||||
$ hg log -r . | ||||
3:be1832deae9a b (no-eol) | ||||
$ hg bookmarks | ||||
mybook 3:be1832deae9a | ||||
$ hg debugobsolete --rev tip | ||||
1e9a3c00cbe90d236ac05ef61efcc5e40b7412bc be1832deae9ac531caa7438b8dcf6055a122cd8e 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '4', 'operation': 'rebase', 'user': 'test'} | ||||
Obsoleted working parent and bookmark could be moved if an ancestor of working | ||||
parent gets moved: | ||||
$ hg init $TESTTMP/ancestor-wd-move | ||||
$ cd $TESTTMP/ancestor-wd-move | ||||
$ hg debugdrawdag <<'EOS' | ||||
> E D1 # rebase: D1 -> D2 | ||||
> | | | ||||
> | C | ||||
> D2 | | ||||
> | B | ||||
> |/ | ||||
> A | ||||
> EOS | ||||
$ hg update D1 -q | ||||
$ hg bookmark book -i | ||||
$ hg rebase -r B+D1 -d E | ||||
rebasing 1:112478962961 B "B" | ||||
note: not rebasing 5:15ecf15e0114 book D1 tip "D1", already in destination as 2:0807738e0be9 D2 "D2" | ||||
1 new orphan changesets | ||||
$ hg log -G -T '{desc} {bookmarks}' | ||||
@ B book | ||||
| | ||||
| x D1 | ||||
| | | ||||
o | E | ||||
| | | ||||
| * C | ||||
| | | ||||
o | D2 | ||||
| | | ||||
| x B | ||||
|/ | ||||
o A | ||||
Rebasing a merge with one of its parent having a hidden successor | ||||
$ hg init $TESTTMP/merge-p1-hidden-successor | ||||
$ cd $TESTTMP/merge-p1-hidden-successor | ||||
$ hg debugdrawdag <<'EOS' | ||||
> E | ||||
> | | ||||
> B3 B2 # amend: B1 -> B2 -> B3 | ||||
> |/ # B2 is hidden | ||||
> | D | ||||
> | |\ | ||||
> | B1 C | ||||
> |/ | ||||
> A | ||||
> EOS | ||||
1 new orphan changesets | ||||
$ eval `hg tags -T '{tag}={node}\n'` | ||||
$ rm .hg/localtags | ||||
$ hg rebase -r $D -d $E | ||||
rebasing 5:9e62094e4d94 "D" | ||||
$ hg log -G | ||||
o 7:a699d059adcf D | ||||
|\ | ||||
| o 6:ecc93090a95c E | ||||
| | | ||||
| o 4:0dc878468a23 B3 | ||||
| | | ||||
o | 1:96cc3511f894 C | ||||
/ | ||||
o 0:426bada5c675 A | ||||
Martin von Zweigbergk
|
r47623 | For some reasons (--hidden, directaccess, etc.), | ||
Martin von Zweigbergk
|
r47585 | rebasestate may contain hidden hashes. "rebase --abort" should work regardless. | ||
$ hg init $TESTTMP/hidden-state1 | ||||
$ cd $TESTTMP/hidden-state1 | ||||
$ hg debugdrawdag <<'EOS' | ||||
> C | ||||
> | | ||||
Martin von Zweigbergk
|
r47623 | > D B # B/D=B | ||
> |/ | ||||
Martin von Zweigbergk
|
r47585 | > A | ||
> EOS | ||||
$ eval `hg tags -T '{tag}={node}\n'` | ||||
$ rm .hg/localtags | ||||
Martin von Zweigbergk
|
r47623 | $ hg update -q $C | ||
Martin von Zweigbergk
|
r47585 | $ hg rebase -s $B -d $D | ||
rebasing 1:2ec65233581b "B" | ||||
merging D | ||||
warning: conflicts while merging D! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | ||||
[240] | ||||
Martin von Zweigbergk
|
r47623 | $ hg debugobsolete $B | ||
1 new obsolescence markers | ||||
obsoleted 1 changesets | ||||
1 new orphan changesets | ||||
$ hg debugobsolete $C | ||||
1 new obsolescence markers | ||||
obsoleted 1 changesets | ||||
Martin von Zweigbergk
|
r47585 | $ cp -R . $TESTTMP/hidden-state2 | ||
$ hg log -G | ||||
@ 2:b18e25de2cf5 D | ||||
| | ||||
Martin von Zweigbergk
|
r47623 | | % 1:2ec65233581b B (pruned) | ||
Martin von Zweigbergk
|
r47585 | |/ | ||
o 0:426bada5c675 A | ||||
$ hg summary | ||||
parent: 2:b18e25de2cf5 tip | ||||
D | ||||
branch: default | ||||
commit: 1 modified, 1 added, 1 unknown, 1 unresolved | ||||
r49536 | update: (current) | |||
Martin von Zweigbergk
|
r47585 | phases: 3 draft | ||
rebase: 0 rebased, 2 remaining (rebase --continue) | ||||
$ hg rebase --abort | ||||
rebase aborted | ||||
Also test --continue for the above case | ||||
$ cd $TESTTMP/hidden-state2 | ||||
$ hg resolve -m | ||||
(no more unresolved files) | ||||
continue: hg rebase --continue | ||||
$ hg rebase --continue | ||||
Martin von Zweigbergk
|
r47623 | note: not rebasing 1:2ec65233581b "B", it has no successor | ||
note: not rebasing 3:7829726be4dc tip "C", it has no successor | ||||
Martin von Zweigbergk
|
r47585 | $ hg log -G | ||
Martin von Zweigbergk
|
r47623 | @ 2:b18e25de2cf5 D | ||
Martin von Zweigbergk
|
r47585 | | | ||
o 0:426bada5c675 A | ||||
==================== | ||||
Test --stop option | | ||||
==================== | ||||
$ cd .. | ||||
$ hg init rbstop | ||||
$ cd rbstop | ||||
$ echo a>a | ||||
$ hg ci -Aqma | ||||
$ echo b>b | ||||
$ hg ci -Aqmb | ||||
$ echo c>c | ||||
$ hg ci -Aqmc | ||||
$ echo d>d | ||||
$ hg ci -Aqmd | ||||
$ hg up 0 -q | ||||
$ echo f>f | ||||
$ hg ci -Aqmf | ||||
$ echo D>d | ||||
$ hg ci -Aqm "conflict with d" | ||||
$ hg up 3 -q | ||||
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n" | ||||
o 5:00bfc9898aeb test | ||||
| conflict with d | ||||
| | ||||
o 4:dafd40200f93 test | ||||
| f | ||||
| | ||||
| @ 3:055a42cdd887 test | ||||
| | d | ||||
| | | ||||
| o 2:177f92b77385 test | ||||
| | c | ||||
| | | ||||
| o 1:d2ae7f538514 test | ||||
|/ b | ||||
| | ||||
o 0:cb9a9f314b8b test | ||||
a | ||||
$ hg rebase -s 1 -d 5 | ||||
rebasing 1:d2ae7f538514 "b" | ||||
rebasing 2:177f92b77385 "c" | ||||
rebasing 3:055a42cdd887 "d" | ||||
merging d | ||||
warning: conflicts while merging d! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | ||||
[240] | ||||
$ hg rebase --stop | ||||
1 new orphan changesets | ||||
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n" | ||||
o 7:7fffad344617 test | ||||
| c | ||||
| | ||||
o 6:b15528633407 test | ||||
| b | ||||
| | ||||
o 5:00bfc9898aeb test | ||||
| conflict with d | ||||
| | ||||
o 4:dafd40200f93 test | ||||
| f | ||||
| | ||||
| @ 3:055a42cdd887 test | ||||
| | d | ||||
| | | ||||
| x 2:177f92b77385 test | ||||
| | c | ||||
| | | ||||
| x 1:d2ae7f538514 test | ||||
|/ b | ||||
| | ||||
o 0:cb9a9f314b8b test | ||||
a | ||||
Test it aborts if unstable csets is not allowed: | ||||
=============================================== | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [experimental] | ||||
> evolution.allowunstable=False | ||||
> EOF | ||||
$ hg strip 6 --no-backup -q | ||||
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n" | ||||
o 5:00bfc9898aeb test | ||||
| conflict with d | ||||
| | ||||
o 4:dafd40200f93 test | ||||
| f | ||||
| | ||||
| @ 3:055a42cdd887 test | ||||
| | d | ||||
| | | ||||
| o 2:177f92b77385 test | ||||
| | c | ||||
| | | ||||
| o 1:d2ae7f538514 test | ||||
|/ b | ||||
| | ||||
o 0:cb9a9f314b8b test | ||||
a | ||||
$ hg rebase -s 1 -d 5 | ||||
rebasing 1:d2ae7f538514 "b" | ||||
rebasing 2:177f92b77385 "c" | ||||
rebasing 3:055a42cdd887 "d" | ||||
merging d | ||||
warning: conflicts while merging d! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | ||||
[240] | ||||
$ hg rebase --stop | ||||
abort: cannot remove original changesets with unrebased descendants | ||||
(either enable obsmarkers to allow unstable revisions or use --keep to keep original changesets) | ||||
[20] | ||||
$ hg rebase --abort | ||||
saved backup bundle to $TESTTMP/rbstop/.hg/strip-backup/b15528633407-6eb72b6f-backup.hg | ||||
rebase aborted | ||||
Test --stop when --keep is passed: | ||||
================================== | ||||
$ hg rebase -s 1 -d 5 --keep | ||||
rebasing 1:d2ae7f538514 "b" | ||||
rebasing 2:177f92b77385 "c" | ||||
rebasing 3:055a42cdd887 "d" | ||||
merging d | ||||
warning: conflicts while merging d! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | ||||
[240] | ||||
$ hg rebase --stop | ||||
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n" | ||||
o 7:7fffad344617 test | ||||
| c | ||||
| | ||||
o 6:b15528633407 test | ||||
| b | ||||
| | ||||
o 5:00bfc9898aeb test | ||||
| conflict with d | ||||
| | ||||
o 4:dafd40200f93 test | ||||
| f | ||||
| | ||||
| @ 3:055a42cdd887 test | ||||
| | d | ||||
| | | ||||
| o 2:177f92b77385 test | ||||
| | c | ||||
| | | ||||
| o 1:d2ae7f538514 test | ||||
|/ b | ||||
| | ||||
o 0:cb9a9f314b8b test | ||||
a | ||||
Test --stop aborts when --collapse was passed: | ||||
============================================= | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [experimental] | ||||
> evolution.allowunstable=True | ||||
> EOF | ||||
$ hg strip 6 | ||||
saved backup bundle to $TESTTMP/rbstop/.hg/strip-backup/b15528633407-6eb72b6f-backup.hg | ||||
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n" | ||||
o 5:00bfc9898aeb test | ||||
| conflict with d | ||||
| | ||||
o 4:dafd40200f93 test | ||||
| f | ||||
| | ||||
| @ 3:055a42cdd887 test | ||||
| | d | ||||
| | | ||||
| o 2:177f92b77385 test | ||||
| | c | ||||
| | | ||||
| o 1:d2ae7f538514 test | ||||
|/ b | ||||
| | ||||
o 0:cb9a9f314b8b test | ||||
a | ||||
$ hg rebase -s 1 -d 5 --collapse -m "collapsed b c d" | ||||
rebasing 1:d2ae7f538514 "b" | ||||
rebasing 2:177f92b77385 "c" | ||||
rebasing 3:055a42cdd887 "d" | ||||
merging d | ||||
warning: conflicts while merging d! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | ||||
[240] | ||||
$ hg rebase --stop | ||||
abort: cannot stop in --collapse session | ||||
[20] | ||||
$ hg rebase --abort | ||||
rebase aborted | ||||
$ hg diff | ||||
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n" | ||||
o 5:00bfc9898aeb test | ||||
| conflict with d | ||||
| | ||||
o 4:dafd40200f93 test | ||||
| f | ||||
| | ||||
| @ 3:055a42cdd887 test | ||||
| | d | ||||
| | | ||||
| o 2:177f92b77385 test | ||||
| | c | ||||
| | | ||||
| o 1:d2ae7f538514 test | ||||
|/ b | ||||
| | ||||
o 0:cb9a9f314b8b test | ||||
a | ||||
Test --stop raise errors with conflicting options: | ||||
================================================= | ||||
$ hg rebase -s 3 -d 5 | ||||
rebasing 3:055a42cdd887 "d" | ||||
merging d | ||||
warning: conflicts while merging d! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | ||||
[240] | ||||
$ hg rebase --stop --dry-run | ||||
abort: cannot specify both --stop and --dry-run | ||||
[10] | ||||
$ hg rebase -s 3 -d 5 | ||||
abort: rebase in progress | ||||
(use 'hg rebase --continue', 'hg rebase --abort', or 'hg rebase --stop') | ||||
[20] | ||||
$ hg rebase --stop --continue | ||||
abort: cannot specify both --stop and --continue | ||||
[10] | ||||
Test --stop moves bookmarks of original revisions to new rebased nodes: | ||||
====================================================================== | ||||
$ cd .. | ||||
$ hg init repo | ||||
$ cd repo | ||||
$ echo a > a | ||||
$ hg ci -Am A | ||||
adding a | ||||
$ echo b > b | ||||
$ hg ci -Am B | ||||
adding b | ||||
$ hg book X | ||||
$ hg book Y | ||||
$ echo c > c | ||||
$ hg ci -Am C | ||||
adding c | ||||
$ hg book Z | ||||
$ echo d > d | ||||
$ hg ci -Am D | ||||
adding d | ||||
$ hg up 0 -q | ||||
$ echo e > e | ||||
$ hg ci -Am E | ||||
adding e | ||||
created new head | ||||
$ echo doubt > d | ||||
$ hg ci -Am "conflict with d" | ||||
adding d | ||||
$ hg log -GT "{rev}: {node|short} '{desc}' bookmarks: {bookmarks}\n" | ||||
@ 5: 39adf30bc1be 'conflict with d' bookmarks: | ||||
| | ||||
o 4: 9c1e55f411b6 'E' bookmarks: | ||||
| | ||||
| o 3: 67a385d4e6f2 'D' bookmarks: Z | ||||
| | | ||||
| o 2: 49cb3485fa0c 'C' bookmarks: Y | ||||
| | | ||||
| o 1: 6c81ed0049f8 'B' bookmarks: X | ||||
|/ | ||||
o 0: 1994f17a630e 'A' bookmarks: | ||||
$ hg rebase -s 1 -d 5 | ||||
rebasing 1:6c81ed0049f8 X "B" | ||||
rebasing 2:49cb3485fa0c Y "C" | ||||
rebasing 3:67a385d4e6f2 Z "D" | ||||
merging d | ||||
warning: conflicts while merging d! (edit, then use 'hg resolve --mark') | ||||
unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') | ||||
[240] | ||||
$ hg rebase --stop | ||||
1 new orphan changesets | ||||
$ hg log -GT "{rev}: {node|short} '{desc}' bookmarks: {bookmarks}\n" | ||||
o 7: 9c86c650b686 'C' bookmarks: Y | ||||
| | ||||
o 6: 9b87b54e5fd8 'B' bookmarks: X | ||||
| | ||||
@ 5: 39adf30bc1be 'conflict with d' bookmarks: | ||||
| | ||||
o 4: 9c1e55f411b6 'E' bookmarks: | ||||
| | ||||
| * 3: 67a385d4e6f2 'D' bookmarks: Z | ||||
| | | ||||
| x 2: 49cb3485fa0c 'C' bookmarks: | ||||
| | | ||||
| x 1: 6c81ed0049f8 'B' bookmarks: | ||||
|/ | ||||
o 0: 1994f17a630e 'A' bookmarks: | ||||