view tests/test-rebase-scenario-global @ 9857:24bc6e414610

diff: change --inverse to --reverse This fixes an incompatibility with patch(1), which also uses --reverse for reversed diffs. The --inverse flag was added in 3f522d2fa633. That name was chosen over --reverse since it was thought that --reverse would make --rev ambiguous. It turns out that both flags can co-exist, with the cost that --rev can no longer be shortened to --r and --re. Since one can always use the short -r option, this is not a real problem.
author Martin Geisler <mg@lazybytes.net>
date Sat, 14 Nov 2009 14:21:53 +0100
parents 341182ac95e4
children b345b1cc124f
line wrap: on
line source

#!/bin/sh

echo "[extensions]" >> $HGRCPATH
echo "graphlog=" >> $HGRCPATH
echo "rebase=" >> $HGRCPATH

BASE=`pwd`

addcommit () {
    echo $1 > $1
    hg add $1
    hg commit -d "${2} 0" -m $1
}

commit () {
    hg commit -d "${2} 0" -m $1
}

createrepo () {
    cd $BASE
    rm -rf a
    hg init a
    cd a
    addcommit "A" 0
    addcommit "B" 1

    hg update -C 0
    addcommit "C" 2

    hg update -C 0
    addcommit "D" 3

    hg merge -r 2
    commit "E" 4

    hg update -C 3
    addcommit "F" 5
}

createrepo > /dev/null 2>&1
hg glog  --template '{rev}: {desc}\n'

echo '% Rebasing'
echo '% B onto F - simple rebase'
hg rebase -s 1 -d 5 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg glog  --template '{rev}: {desc}\n'

createrepo > /dev/null 2>&1
echo '% B onto D - intermediate point'
hg rebase -s 1 -d 3 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg glog  --template '{rev}: {desc}\n'

createrepo > /dev/null 2>&1
echo '% C onto F - skip of E'
hg rebase -s 2 -d 5 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg glog  --template '{rev}: {desc}\n'

createrepo > /dev/null 2>&1
echo '% D onto C - rebase of a branching point (skip E)'
hg rebase -s 3 -d 2 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg glog  --template '{rev}: {desc}\n'

createrepo > /dev/null 2>&1
echo '% E onto F - merged revision having a parent in ancestors of target'
hg rebase -s 4 -d 5 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg glog  --template '{rev}: {desc}\n'

createrepo > /dev/null 2>&1
echo '% D onto B - E maintains C as parent'
hg rebase -s 3 -d 1 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg glog  --template '{rev}: {desc}\n'

echo '% These will fail (using --source)'
createrepo > /dev/null 2>&1
echo '% E onto D - rebase onto an ancestor'
hg rebase -s 4 -d 3
echo '% D onto E - rebase onto a descendant'
hg rebase -s 3 -d 4
echo '% E onto B - merge revision with both parents not in ancestors of target'
hg rebase -s 4 -d 1

echo
echo '% These will abort gracefully (using --base)'
echo '% E onto E - rebase onto same changeset'
hg rebase -b 4 -d 4
echo '% E onto D - rebase onto an ancestor'
hg rebase -b 4 -d 3
echo '% D onto E - rebase onto a descendant'
hg rebase -b 3 -d 4

exit 0