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
. $TESTDIR/helpers.sh
echo "[extensions]" >> $HGRCPATH
echo "graphlog=" >> $HGRCPATH
echo "rebase=" >> $HGRCPATH
addcommit () {
echo $1 > $1
hg add $1
hg commit -d "${2} 0" -m $1
}
commit () {
hg commit -d "${2} 0" -m $1
}
rm -rf a
hg init a
cd a
addcommit "C1" 0
addcommit "C2" 1
cd ..
hg clone a b
# This is needed to test pull --rebase
hg clone a c
cd b
addcommit "L1" 2
cd ../a
addcommit "R1" 3
cd ../b
echo
echo "% Now b has one revision to be pulled from a"
hg pull --rebase | hidebackup | sed -e 's/\(pulling from \).*/\1/'
hg glog --template '{rev}:{desc}\n'
echo
echo "% Re-run pull --rebase"
hg pull --rebase | sed 's/\(pulling from \).*/\1/'
echo
echo "% Invoke pull --rebase and nothing to rebase"
cd ../c
hg pull --rebase 2>&1 | sed 's/\(pulling from \).*/\1/'
hg glog --template '{rev}\n' -l 1
echo
echo "% pull --rebase --update should ignore --update"
hg pull --rebase --update 2>&1 | sed 's/\(pulling from \).*/\1/'
echo
echo "% pull --rebase doesn't update if nothing has been pulled"
hg up 1
hg pull --rebase 2>&1 | sed 's/\(pulling from \).*/\1/'
hg glog --template '{rev}\n' -l 1
exit 0