convert/bzr: make it work with filemaps (
issue1631)
The bzr converter maintains a child -> parents mapping and drop entries
whenever a child is read. It does not work with filemaps, getchangedfiles() may
be called more than once when filtered files belong to merge revisions.
getchanges() still works that way but it is not clear whether a similar issue
can arise when interacting with merges.
#!/bin/sh
hg init
echo % should fail
hg add .hg/00changelog.i
mkdir a
echo a > a/a
hg ci -Ama
ln -s a b
echo b > a/b
echo % should fail
hg add b/b
echo % should succeed
hg add b
echo % should still fail - maybe
hg add b/b
echo % unbundle tampered bundle
hg init target
cd target
hg unbundle $TESTDIR/tampered.hg
echo % attack .hg/test
hg manifest -r0
hg update -Cr0
echo % attack foo/.hg/test
hg manifest -r1
hg update -Cr1
echo % attack back/test where back symlinks to ..
hg manifest -r2
hg update -Cr2
echo % attack ../test
hg manifest -r3
hg update -Cr3
echo % attack /tmp/test
hg manifest -r4
hg update -Cr4 2>&1 | sed -e "s|/.*/test-audit-path|[HGTMP]/test-audit-path|"
exit 0