dirstate.remove: during merges, remember the previous file state
We encode the previous state as a negative file size (AFAICS, previous
versions of hg always have size == 0 when state == 'r').
We save the state of 'm'erged and dirty files, because they're the
two states that indicate that a file has to be committed on a merge
to correctly record per-file history.
#!/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/"