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 -e
umask 027
mkdir test1
cd test1
hg init
touch a b
hg add a b
hg ci -m "added a b" -d "0 0"
cd ..
mkdir test2
cd test2
hg init
hg pull ../test1
hg co
chmod +x a
hg ci -m "chmod +x a" -d "0 0"
cd ../test1
echo 123 >>a
hg ci -m "a updated" -d "0 0"
hg pull ../test2
hg heads
hg history
hg -v co -m
ls -l ../test[12]/a > foo
cut -b 0-10 < foo