view tests/test-rebase-collapse @ 7493:518afef5e350

Fix Bugzilla integration to work with new Bugzilla 3.2. Bugzilla 3.2 changes the type of all MySQL tables it uses from MyISAM to InnoDB. MyISAM does not support transactions, and performs an implied commit after each update. InnoDB does support transactions, and so exposes a bug where changes to the Bugzilla database were not committed, and so with 3.2 are lost when the database connection closes.
author Jim Hague <jim.hague@acm.org>
date Tue, 09 Dec 2008 09:58:13 +0000
parents 45495d784ad6
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
    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 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 

echo '% Fix conflict and continue'
echo 'Resolved merge' > E
hg resolve -m E
hg rebase -c 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