view tests/test-rebase-interruptions @ 7460:3342e6ada4b9

push: use the fast changegroup() path on push The race doesn't happen on push (because the discovery is done in the same hg process), so use the fast path instead.
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Tue, 02 Dec 2008 19:36:43 +0100
parents 93609576244e
children 8766fee6f225
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" -u test -m $1
}

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

createrepo () {
    cd $BASE
    rm -rf a
    hg init a
    cd a
    addcommit "A" 0
    addcommit "B" 1
    echo "C" >> A
    commit "C" 2

    hg update -C 0
    echo "D" >> A
    commit "D" 3
    addcommit "E" 4
}

echo "% Changes during an interruption - continue"
createrepo > /dev/null 2>&1
hg glog  --template '{rev}: {desc}\n'

echo
echo "% - Rebasing B onto E"
hg rebase -s 1 -d 4 2>&1 | sed 's/\(saving bundle to \).*/\1/'

echo
echo "% - Force a commit on C during the interruption"
hg update -C 2
addcommit "Extra" 5
hg glog  --template '{rev}: {desc}\n'

echo
echo "% - Resume the rebasing"
hg rebase --continue

echo
echo "% - Solve the conflict and go on"
echo 'conflict solved' > A
rm A.orig
hg resolve -m A
hg rebase --continue
hg glog  --template '{rev}: {desc}\n'

echo
echo
echo "% Changes during an interruption - abort"
createrepo > /dev/null 2>&1
hg glog  --template '{rev}: {desc}\n'

echo
echo "% Rebasing B onto E"
hg rebase -s 1 -d 4 2>&1 | sed 's/\(saving bundle to \).*/\1/'

echo
echo "% Force a commit on B' during the interruption"
hg update -C 5
addcommit "Extra" 6
hg glog  --template '{rev}: {desc}\n'

echo
echo "% Abort the rebasing"
hg rebase --abort
hg glog  --template '{rev}: {desc}\n'

exit 0