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
# Test issue 746: renaming files brought by the
# second parent of a merge was broken.
echo % create source repository
hg init t
cd t
echo a > a
hg ci -Am a
cd ..
echo % fork source repository
hg clone t t2
cd t2
echo b > b
hg ci -Am b
echo % update source repository
cd ../t
echo a >> a
hg ci -m a2
echo % merge repositories
hg pull ../t2
hg merge
hg st
echo % rename b as c
hg mv b c
hg st
echo % rename back c as b
hg mv c b
hg st