Mercurial > hg
changeset 33560:d4df141f90d1
tests: rewrite test-rebase-detach.t using drawdag
This makes it much clearer because each test case can have exactly the
graph it wants (no extra cruft just because other tests want it).
Differential Revision: https://phab.mercurial-scm.org/D94
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 14 Jul 2017 21:44:29 -0700 |
parents | 094634292d34 |
children | 2893face0af5 |
files | tests/test-rebase-detach.t |
diffstat | 1 files changed, 219 insertions(+), 316 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-rebase-detach.t Fri Jul 14 23:09:17 2017 -0700 +++ b/tests/test-rebase-detach.t Fri Jul 14 21:44:29 2017 -0700 @@ -4,167 +4,241 @@ > > [alias] > tglog = log -G --template "{rev}: '{desc}'\n" + > + > [extensions] + > drawdag=$TESTDIR/drawdag.py > EOF +Rebasing D onto B detaching from C (one commit): - $ hg init a - $ cd a - $ hg unbundle "$TESTDIR/bundles/rebase.hg" - adding changesets - adding manifests - adding file changes - added 8 changesets with 7 changes to 7 files (+2 heads) - (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 - - $ cd .. - - -Rebasing D onto H detaching from C: - - $ hg clone -q -u . a a1 + $ hg init a1 $ cd a1 - $ hg tglog - @ 7: 'H' - | - | o 6: 'G' - |/| - o | 5: 'F' - | | - | o 4: 'E' - |/ - | o 3: 'D' - | | - | o 2: 'C' - | | - | o 1: 'B' - |/ - o 0: 'A' - - $ hg phase --force --secret 3 - $ hg rebase -s 3 -d 7 - rebasing 3:32af7686d403 "D" - saved backup bundle to $TESTTMP/a1/.hg/strip-backup/32af7686d403-6f7dface-rebase.hg (glob) + $ hg debugdrawdag <<EOF + > D + > | + > C B + > |/ + > A + > EOF + $ hg phase --force --secret D + + $ hg rebase -s D -d B + rebasing 3:e7b3f00ed42e "D" (D tip) + saved backup bundle to $TESTTMP/a1/.hg/strip-backup/e7b3f00ed42e-6f368371-rebase.hg (glob) $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" - o 7:secret 'D' - | - @ 6:draft 'H' + o 3:secret 'D' | - | o 5:draft 'G' - |/| - o | 4:draft 'F' - | | - | o 3:draft 'E' - |/ | o 2:draft 'C' | | - | o 1:draft 'B' + o | 1:draft 'B' |/ o 0:draft 'A' $ hg manifest --rev tip A + B D - F - H $ cd .. -Rebasing C onto H detaching from B: +Rebasing D onto B detaching from C (two commits): + + $ hg init a2 + $ cd a2 - $ hg clone -q -u . a a2 - $ cd a2 + $ hg debugdrawdag <<EOF + > E + > | + > D + > | + > C B + > |/ + > A + > EOF + + $ hg rebase -s D -d B + rebasing 3:e7b3f00ed42e "D" (D) + rebasing 4:69a34c08022a "E" (E tip) + saved backup bundle to $TESTTMP/a2/.hg/strip-backup/e7b3f00ed42e-a2ec7cea-rebase.hg (glob) $ hg tglog - @ 7: 'H' + o 4: 'E' | - | o 6: 'G' - |/| - o | 5: 'F' - | | - | o 4: 'E' - |/ - | o 3: 'D' - | | + o 3: 'D' + | | o 2: 'C' | | - | o 1: 'B' - |/ - o 0: 'A' - - $ hg rebase -s 2 -d 7 - rebasing 2:5fddd98957c8 "C" - rebasing 3:32af7686d403 "D" - saved backup bundle to $TESTTMP/a2/.hg/strip-backup/5fddd98957c8-f9244fa1-rebase.hg (glob) - - $ hg tglog - o 7: 'D' - | - o 6: 'C' - | - @ 5: 'H' - | - | o 4: 'G' - |/| - o | 3: 'F' - | | - | o 2: 'E' - |/ - | o 1: 'B' + o | 1: 'B' |/ o 0: 'A' $ hg manifest --rev tip A + B + D + E + + $ cd .. + +Rebasing C onto B using detach (same as not using it): + + $ hg init a3 + $ cd a3 + + $ hg debugdrawdag <<EOF + > D + > | + > C B + > |/ + > A + > EOF + + $ hg rebase -s C -d B + rebasing 2:dc0947a82db8 "C" (C) + rebasing 3:e7b3f00ed42e "D" (D tip) + saved backup bundle to $TESTTMP/a3/.hg/strip-backup/dc0947a82db8-b8481714-rebase.hg (glob) + + $ hg tglog + o 3: 'D' + | + o 2: 'C' + | + o 1: 'B' + | + o 0: 'A' + + $ hg manifest --rev tip + A + B C D - F - H $ cd .. -Rebasing B onto H using detach (same as not using it): +Rebasing D onto B detaching from C and collapsing: + + $ hg init a4 + $ cd a4 + + $ hg debugdrawdag <<EOF + > E + > | + > D + > | + > C B + > |/ + > A + > EOF + $ hg phase --force --secret E + + $ hg rebase --collapse -s D -d B + rebasing 3:e7b3f00ed42e "D" (D) + rebasing 4:69a34c08022a "E" (E tip) + saved backup bundle to $TESTTMP/a4/.hg/strip-backup/e7b3f00ed42e-a2ec7cea-rebase.hg (glob) - $ hg clone -q -u . a a3 - $ cd a3 + $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" + o 3:secret 'Collapsed revision + | * D + | * E' + | o 2:draft 'C' + | | + o | 1:draft 'B' + |/ + o 0:draft 'A' + + $ hg manifest --rev tip + A + B + D + E + + $ cd .. + +Rebasing across null as ancestor + $ hg init a5 + $ cd a5 + + $ hg debugdrawdag <<EOF + > E + > | + > D + > | + > C + > | + > A B + > EOF + + $ hg rebase -s C -d B + rebasing 2:dc0947a82db8 "C" (C) + rebasing 3:e7b3f00ed42e "D" (D) + rebasing 4:69a34c08022a "E" (E tip) + saved backup bundle to $TESTTMP/a5/.hg/strip-backup/dc0947a82db8-3eefec98-rebase.hg (glob) $ hg tglog - @ 7: 'H' + o 4: 'E' + | + o 3: 'D' + | + o 2: 'C' | - | o 6: 'G' - |/| - o | 5: 'F' - | | - | o 4: 'E' + o 1: 'B' + + o 0: 'A' + + $ hg rebase -d 1 -s 3 + rebasing 3:e9153d36a1af "D" + rebasing 4:e3d0c70d606d "E" (tip) + saved backup bundle to $TESTTMP/a5/.hg/strip-backup/e9153d36a1af-db7388ed-rebase.hg (glob) + $ hg tglog + o 4: 'E' + | + o 3: 'D' + | + | o 2: 'C' |/ - | o 3: 'D' - | | - | o 2: 'C' - | | - | o 1: 'B' - |/ + o 1: 'B' + o 0: 'A' - $ hg rebase -s 1 -d 7 - rebasing 1:42ccdea3bb16 "B" - rebasing 2:5fddd98957c8 "C" - rebasing 3:32af7686d403 "D" - saved backup bundle to $TESTTMP/a3/.hg/strip-backup/42ccdea3bb16-3cb021d3-rebase.hg (glob) + $ cd .. + +Verify that target is not selected as external rev (issue3085) + + $ hg init a6 + $ cd a6 + $ hg debugdrawdag <<EOF + > H + > | G + > |/| + > F E + > |/ + > A + > EOF + $ hg up -q G + + $ echo "I" >> E + $ hg ci -m "I" + $ hg tag --local I + $ hg merge H + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg ci -m "Merge" + $ echo "J" >> F + $ hg ci -m "J" $ hg tglog - o 7: 'D' - | - o 6: 'C' + @ 7: 'J' | - o 5: 'B' - | - @ 4: 'H' - | + o 6: 'Merge' + |\ + | o 5: 'I' + | | + o | 4: 'H' + | | | o 3: 'G' |/| o | 2: 'F' @@ -173,116 +247,17 @@ |/ o 0: 'A' - $ hg manifest --rev tip - A - B - C - D - F - H - - $ cd .. - - -Rebasing C onto H detaching from B and collapsing: - - $ hg clone -q -u . a a4 - $ cd a4 - $ hg phase --force --secret 3 + $ hg rebase -s I -d H --collapse --config ui.merge=internal:other + rebasing 5:b92d164ad3cb "I" (I) + rebasing 6:0cfbc7e8faaf "Merge" + rebasing 7:c6aaf0d259c0 "J" (tip) + saved backup bundle to $TESTTMP/a6/.hg/strip-backup/b92d164ad3cb-88fd7ab7-rebase.hg (glob) $ hg tglog - @ 7: 'H' - | - | o 6: 'G' - |/| - o | 5: 'F' - | | - | o 4: 'E' - |/ - | o 3: 'D' - | | - | o 2: 'C' - | | - | o 1: 'B' - |/ - o 0: 'A' - - $ hg rebase --collapse -s 2 -d 7 - rebasing 2:5fddd98957c8 "C" - rebasing 3:32af7686d403 "D" - saved backup bundle to $TESTTMP/a4/.hg/strip-backup/5fddd98957c8-f9244fa1-rebase.hg (glob) - - $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" - o 6:secret 'Collapsed revision - | * C - | * D' - @ 5:draft 'H' - | - | o 4:draft 'G' - |/| - o | 3:draft 'F' - | | - | o 2:draft 'E' - |/ - | o 1:draft 'B' - |/ - o 0:draft 'A' - - $ hg manifest --rev tip - A - C - D - F - H - - $ cd .. - -Rebasing across null as ancestor - $ hg clone -q -U a a5 - - $ cd a5 - - $ echo x > x - - $ hg add x - - $ hg ci -m "extra branch" - created new head - - $ hg tglog - @ 8: 'extra branch' - - o 7: 'H' - | - | o 6: 'G' - |/| - o | 5: 'F' - | | - | o 4: 'E' - |/ - | o 3: 'D' - | | - | o 2: 'C' - | | - | o 1: 'B' - |/ - o 0: 'A' - - $ hg rebase -s 1 -d tip - rebasing 1:42ccdea3bb16 "B" - rebasing 2:5fddd98957c8 "C" - rebasing 3:32af7686d403 "D" - saved backup bundle to $TESTTMP/a5/.hg/strip-backup/42ccdea3bb16-3cb021d3-rebase.hg (glob) - - $ hg tglog - o 8: 'D' - | - o 7: 'C' - | - o 6: 'B' - | - @ 5: 'extra branch' - + @ 5: 'Collapsed revision + | * I + | * Merge + | * J' o 4: 'H' | | o 3: 'G' @@ -294,76 +269,8 @@ o 0: 'A' - $ hg rebase -d 5 -s 7 - rebasing 7:13547172c9c0 "C" - rebasing 8:4e27a76c371a "D" (tip) - saved backup bundle to $TESTTMP/a5/.hg/strip-backup/13547172c9c0-35685ded-rebase.hg (glob) - $ hg tglog - o 8: 'D' - | - o 7: 'C' - | - | o 6: 'B' - |/ - @ 5: 'extra branch' - - o 4: 'H' - | - | o 3: 'G' - |/| - o | 2: 'F' - | | - | o 1: 'E' - |/ - o 0: 'A' - - $ cd .. - -Verify that target is not selected as external rev (issue3085) - - $ hg clone -q -U a a6 - $ cd a6 - $ hg up -q 6 - - $ echo "I" >> E - $ hg ci -m "I" - $ hg merge 7 - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - (branch merge, don't forget to commit) - $ hg ci -m "Merge" - $ echo "J" >> F - $ hg ci -m "J" - - $ hg rebase -s 8 -d 7 --collapse --config ui.merge=internal:other - rebasing 8:9790e768172d "I" - rebasing 9:5d7b11f5fb97 "Merge" - rebasing 10:9427d4d5af81 "J" (tip) - saved backup bundle to $TESTTMP/a6/.hg/strip-backup/9790e768172d-c2111e9d-rebase.hg (glob) - - $ hg tglog - @ 8: 'Collapsed revision - | * I - | * Merge - | * J' - o 7: 'H' - | - | o 6: 'G' - |/| - o | 5: 'F' - | | - | o 4: 'E' - |/ - | o 3: 'D' - | | - | o 2: 'C' - | | - | o 1: 'B' - |/ - o 0: 'A' - - $ hg log --rev tip - changeset: 8:9472f4b1d736 + changeset: 5:65079693dac4 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 @@ -373,40 +280,36 @@ $ cd .. Ensure --continue restores a correct state (issue3046) and phase: - $ hg clone -q a a7 + $ hg init a7 $ cd a7 - $ hg up -q 3 - $ echo 'H2' > H - $ hg ci -A -m 'H2' - adding H - $ hg phase --force --secret 8 - $ hg rebase -s 8 -d 7 --config ui.merge=internal:fail - rebasing 8:6215fafa5447 "H2" (tip) - merging H - warning: conflicts while merging H! (edit, then use 'hg resolve --mark') + + $ hg debugdrawdag <<EOF + > C B + > |/ + > A + > EOF + $ hg up -q C + $ echo 'B2' > B + $ hg ci -A -m 'B2' + adding B + $ hg phase --force --secret . + $ hg rebase -s . -d B --config ui.merge=internal:fail + rebasing 3:17b4880d2402 "B2" (tip) + merging B + warning: conflicts while merging B! (edit, then use 'hg resolve --mark') unresolved conflicts (see hg resolve, then hg rebase --continue) [1] $ hg resolve --all -t internal:local (no more unresolved files) continue: hg rebase --continue $ hg rebase -c - rebasing 8:6215fafa5447 "H2" (tip) - note: rebase of 8:6215fafa5447 created no changes to commit - saved backup bundle to $TESTTMP/a7/.hg/strip-backup/6215fafa5447-5804ebd5-rebase.hg (glob) + rebasing 3:17b4880d2402 "B2" (tip) + note: rebase of 3:17b4880d2402 created no changes to commit + saved backup bundle to $TESTTMP/a7/.hg/strip-backup/17b4880d2402-1ae1f6cc-rebase.hg (glob) $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" - @ 7:draft 'H' + o 2:draft 'C' | - | o 6:draft 'G' - |/| - o | 5:draft 'F' - | | - | o 4:draft 'E' - |/ - | o 3:draft 'D' - | | - | o 2:draft 'C' - | | - | o 1:draft 'B' + | @ 1:draft 'B' |/ o 0:draft 'A'