Use shutil.copystat in copyfile().
#!/bin/sh
unset HGUSER
EMAIL="My Name <myname@example.com>"
export EMAIL
hg init test
cd test
touch asdf
hg add asdf
hg commit -d '1000000 0' -m commit-1
hg tip
unset EMAIL
echo 1234 > asdf
hg commit -d '1000000 0' -u "foo@bar.com" -m commit-1
hg tip
echo "[ui]" >> .hg/hgrc
echo "username = foobar <foo@bar.com>" >> .hg/hgrc
echo 12 > asdf
hg commit -d '1000000 0' -m commit-1
hg tip
echo 1 > asdf
hg commit -d '1000000 0' -u "foo@bar.com" -m commit-1
hg tip
echo 123 > asdf
echo "[ui]" > .hg/hgrc
echo "username = " >> .hg/hgrc
hg commit -d '1000000 0' -m commit-1
rm .hg/hgrc
hg commit -d '1000000 0' -m commit-1 2>&1 | sed -e "s/'[^']*'/user@host/"