Mercurial > hg-stable
diff tests/test-rebase-scenario-global.t @ 12608:16b854cb80f1
tests: unify test-rebase*
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Fri, 01 Oct 2010 16:10:06 +0200 |
parents | tests/test-rebase-scenario-global@2313dc4d9817 |
children | 6cc4b14fb76b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-rebase-scenario-global.t Fri Oct 01 16:10:06 2010 +0200 @@ -0,0 +1,249 @@ + $ cat >> $HGRCPATH <<EOF + > [extensions] + > graphlog= + > rebase= + > + > [alias] + > tglog = log -G --template "{rev}: '{desc}' {branches}\n" + > EOF + + + $ hg init a + $ cd a + + $ echo A > A + $ hg ci -Am A + adding A + + $ echo B > B + $ hg ci -Am B + adding B + + $ hg up -q -C 0 + + $ echo C > C + $ hg ci -Am C + adding C + created new head + + $ hg up -q -C 0 + + $ echo D > D + $ hg ci -Am D + adding D + created new head + + $ hg merge -r 2 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + + $ hg ci -m E + + $ hg up -q -C 3 + + $ echo F > F + $ hg ci -Am F + adding F + created new head + + $ cd .. + + +Rebasing +B onto F - simple rebase: + + $ hg clone -q -u . a a1 + $ cd a1 + + $ hg tglog + @ 5: 'F' + | + | o 4: 'E' + |/| + o | 3: 'D' + | | + | o 2: 'C' + |/ + | o 1: 'B' + |/ + o 0: 'A' + + $ hg rebase -s 1 -d 5 + saved backup bundle to */.hg/strip-backup/*-backup.hg (glob) + + $ hg tglog + @ 5: 'B' + | + o 4: 'F' + | + | o 3: 'E' + |/| + o | 2: 'D' + | | + | o 1: 'C' + |/ + o 0: 'A' + + $ cd .. + + +B onto D - intermediate point: + + $ hg clone -q -u . a a2 + $ cd a2 + + $ hg rebase -s 1 -d 3 + saved backup bundle to */.hg/strip-backup/*-backup.hg (glob) + + $ hg tglog + @ 5: 'B' + | + | o 4: 'F' + |/ + | o 3: 'E' + |/| + o | 2: 'D' + | | + | o 1: 'C' + |/ + o 0: 'A' + + $ cd .. + + +C onto F - skip of E: + + $ hg clone -q -u . a a3 + $ cd a3 + + $ hg rebase -s 2 -d 5 + saved backup bundle to */.hg/strip-backup/*-backup.hg (glob) + + $ hg tglog + @ 4: 'C' + | + o 3: 'F' + | + o 2: 'D' + | + | o 1: 'B' + |/ + o 0: 'A' + + $ cd .. + + +D onto C - rebase of a branching point (skip E): + + $ hg clone -q -u . a a4 + $ cd a4 + + $ hg rebase -s 3 -d 2 + saved backup bundle to */.hg/strip-backup/*-backup.hg (glob) + + $ hg tglog + @ 4: 'F' + | + o 3: 'D' + | + o 2: 'C' + | + | o 1: 'B' + |/ + o 0: 'A' + + $ cd .. + + +E onto F - merged revision having a parent in ancestors of target: + + $ hg clone -q -u . a a5 + $ cd a5 + + $ hg rebase -s 4 -d 5 + saved backup bundle to */.hg/strip-backup/*-backup.hg (glob) + + $ hg tglog + @ 5: 'E' + |\ + | o 4: 'F' + | | + | o 3: 'D' + | | + o | 2: 'C' + |/ + | o 1: 'B' + |/ + o 0: 'A' + + $ cd .. + + +D onto B - E maintains C as parent: + + $ hg clone -q -u . a a6 + $ cd a6 + + $ hg rebase -s 3 -d 1 + saved backup bundle to */.hg/strip-backup/*-backup.hg (glob) + + $ hg tglog + @ 5: 'F' + | + | o 4: 'E' + |/| + o | 3: 'D' + | | + | o 2: 'C' + | | + o | 1: 'B' + |/ + o 0: 'A' + + $ cd .. + + +These will fail (using --source): + +E onto D - rebase onto an ancestor: + + $ hg clone -q -u . a a7 + $ cd a7 + + $ hg rebase -s 4 -d 3 + abort: source is descendant of destination + [255] + +D onto E - rebase onto a descendant: + + $ hg rebase -s 3 -d 4 + abort: source is ancestor of destination + [255] + +E onto B - merge revision with both parents not in ancestors of target: + + $ hg rebase -s 4 -d 1 + abort: cannot use revision 4 as base, result would have 3 parents + [255] + + +These will abort gracefully (using --base): + +E onto E - rebase onto same changeset: + + $ hg rebase -b 4 -d 4 + nothing to rebase + [1] + +E onto D - rebase onto an ancestor: + + $ hg rebase -b 4 -d 3 + nothing to rebase + [1] + +D onto E - rebase onto a descendant: + + $ hg rebase -b 3 -d 4 + nothing to rebase + [1] +