view tests/test-rebase-mq @ 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 02f4a0bcfdce
children c3d4ff03ec72
line wrap: on
line source

#!/bin/sh

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

filterpatch()
{
    sed -e "s/^\(# Date\).*/\1/" \
        -e "s/^\(# Node ID\).*/\1/" \
        -e "s/^\(# Parent\).*/\1/" \
        -e "s/^\(diff -r \)\([a-f0-9]* \)\(-r \)\([a-f0-9]* \)/\1x \3y /" \
        -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" \
        -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/"
}

hg init a
cd a
hg qinit -c # This must work even with a managed mq queue

echo 'c1' > f
hg add f
hg commit -d '0 0' -u test -m "C1"

echo 'r1' > f
hg commit -d '2 0' -u test -m "R1"

hg up 0
hg qnew f.patch
echo 'mq1' > f
hg qref -m 'P0'

hg qnew f2.patch
echo 'mq2' > f
hg qref -m 'P1'
hg glog  --template '{rev} {desc} tags: {tags}\n'

echo
echo '% Rebase - try to rebase on an applied mq patch'
hg rebase -s 1 -d 3

echo
echo '% Rebase - generate a conflict'
hg rebase -s 2 -d 1

echo
echo '% Fix the 1st conflict'
echo 'mq1r1' > f
hg resolve -m f
hg rebase -c 2>&1 | sed -e 's/\(saving bundle to \).*/\1/'

echo
echo '% Fix the 2nd conflict'
echo 'mq1r1mq2' > f
hg resolve -m f
hg rebase -c 2>&1 | sed -e 's/\(saving bundle to \).*/\1/'

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

echo
echo '% Update to qbase'
hg up qbase
echo '% f correctly reflects the merge result'
cat f
echo '% And the patch is correct'
cat .hg/patches/f.patch | filterpatch

echo
echo '% Update to qtip'
hg up qtip
echo '% f correctly reflects the merge result'
cat f
echo '% And the patch is correct'
cat .hg/patches/f2.patch | filterpatch