Fix file-changed-to-dir and dir-to-file commits (issue660).
Allow adding to dirstate files that clash with previously existing
but marked for removal. Protect from reintroducing clashes by revert.
This change doesn't address related issues with update. Current
workaround is to do "clean" update by manually removing conflicting
files/dirs from working directory.
#!/bin/sh
hg init a
cd a
touch empty1
hg add empty1
hg commit -m 'add empty1' -d '1000000 0'
touch empty2
hg add empty2
hg commit -m 'add empty2' -d '1000000 0'
hg up -C 0
touch empty3
hg add empty3
hg commit -m 'add empty3' -d '1000000 0'
hg heads
hg merge 1
# before changeset 05257fd28591, we didn't notice the
# empty file that came from rev 1.
hg status
hg commit -m merge -d '1000000 0'
hg manifest --debug tip