add prechangegroup and pretxnchangegroup hooks.
prechangegroup lets you stop push, pull or unbundle before it begins.
pretxnchangegroup lets you inspect changegroup before transaction is
committed, and roll back if you not like it.
#!/bin/sh
mkdir test
cd test
echo foo>foo
hg init
hg addremove
hg commit -m 1
hg verify
hg serve -p 20059 > /dev/null &
sleep 1 # wait for server to be started
cd ..
hg clone http://localhost:20059/ copy
cd copy
hg verify
hg co
cat foo
hg manifest
hg pull
kill $!