view tests/test-rebase-collapse @ 10955:470a6ace7574

Added support for 'pretxncommit', so that one can call the ACL hook at pre-commit time too. This is useful because now it's possible to avoid violating ACL permissions much sooner, at commit time, instead of waiting for a PUSH to check if there were any invalid commits.
author Elifarley Callado Coelho Cruz <elifarley@gmail.com>
date Tue, 06 Apr 2010 22:15:43 -0300
parents 129e96f7a87a
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
    addcommit "C" 2
    addcommit "D" 3

    hg update -C 0
    addcommit "E" 4

    hg update -C 0
    addcommit "F" 5

    hg merge -r 4
    commit "G" 6

    hg update -C 5
    addcommit "H" 7
}

createrepo > /dev/null 2>&1
hg glog  --template '{rev}: {desc}\n'
echo '% Rebasing B onto H'
hg up -C 3
hg rebase --collapse --keepbranches 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg glog  --template '{rev}: {desc}\n'
echo "Expected A, B, C, D, F, H"
hg manifest

createrepo > /dev/null 2>&1
echo
echo '% Rebasing G onto H'
hg rebase --base 6 --collapse 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg glog  --template '{rev}: {desc}\n'
echo "Expected A, E, F, H"
hg manifest

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

    hg up 0
    addcommit "C" 2
    hg merge
    commit "D" 3

    hg up 1
    addcommit "E" 4

    addcommit "F" 5

    hg merge
    commit "G" 6

    hg up 0
    addcommit "H" 7
}

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

echo
echo '% Rebase and collapse - more than one external (fail)'
hg rebase -s 2 --collapse

echo
echo '% Rebase and collapse - E onto H'
hg rebase -s 4 --collapse 2>&1 | sed 's/\(saving bundle to \).*/\1/'
hg glog  --template '{rev}: {desc}\n'
echo "Expected A, B, C, E, F, H"
hg manifest

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

    hg up 0
    addcommit "C" 2
    hg merge
    commit "D" 3

    hg up 1
    addcommit "E" 4
    
    echo "F" > E
    commit "F" 5

    addcommit "G" 6

    hg merge
    commit "H" 7

    hg up 0
    addcommit "I" 8
}

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

echo
echo '% Rebase and collapse - E onto I'
hg rebase -s 4 --collapse 2>&1 | sed 's/\(saving bundle to \).*/\1/'

hg glog  --template '{rev}: {desc}\n'

echo "Expected A, B, C, E, G, I"
hg manifest

echo 'Cat E:'
cat E

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

    addcommit "C" 2
    hg up 1

    addcommit "D" 3
    
    hg merge
    commit "E" 4

    hg up 0
    addcommit "F" 5
}

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

echo
echo '% Rebase and collapse - B onto F'
hg rebase -s 1 --collapse 2>&1 | sed 's/\(saving bundle to \).*/\1/'

hg glog  --template '{rev}: {desc}\n'

echo "Expected A, B, C, D, F"
hg manifest
exit 0