tests/test-convert-splicemap
author Alexandre Fayolle <alexandre.fayolle@logilab.fr>
Thu, 23 Sep 2010 11:41:27 +0200
branchstable
changeset 12391 ca5fd84d62c6
parent 10119 bb5ea66789e3
permissions -rwxr-xr-x
Fix memory leak when using hg commands over http repositories When using hg commands over an http repository in a long running process, a httphandler instance is leaked for each command, because of a loop handler.parent -> OpenerDirector and OpenerDirector.handlers -> handler which is not handled by Python's gc. Discussion on #mercurial concluded that removing the __del__ method solved the problem.

#!/bin/sh

echo "[extensions]" >> $HGRCPATH
echo "convert=" >> $HGRCPATH
echo 'graphlog =' >> $HGRCPATH

glog()
{
    hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@"
}

hg init repo1
cd repo1
echo a > a
hg ci -Am adda
echo b > b
echo a >> a
hg ci -Am addb
PARENTID1=`hg id --debug -i`
echo c > c
hg ci -Am addc
PARENTID2=`hg id --debug -i`
cd ..

hg init repo2
cd repo2
echo b > a
echo d > d
hg ci -Am addaandd
CHILDID1=`hg id --debug -i`
echo d >> d
hg ci -Am changed
CHILDID2=`hg id --debug -i`
echo e > e
hg ci -Am adde
cd ..

echo '% test invalid splicemap'
cat > splicemap <<EOF
$CHILDID2
EOF
hg convert --splicemap splicemap repo2 repo1

echo '% splice repo2 on repo1'
cat > splicemap <<EOF
$CHILDID1 $PARENTID1
$CHILDID2 $PARENTID2,$CHILDID1
EOF
hg clone repo1 target1
hg convert --splicemap splicemap repo2 target1
glog -R target1