make appendfile simpler so it does not break with revlogng on windows.
it used to cache open files. this made revlogng break because it wants
to rename files when splitting .i into .i/.d, but cannot rename or unlink
open files on windows.
new code is bit slower, but safe on linux and windows. proper fix for
too many open/close of changelog/manifest belongs in different place.
can get 10% speed improvement back.
#!/bin/sh
#
# Corrupt an hg repo with two pulls.
#
# create one repo with a long history
hg init source1
cd source1
touch foo
hg add foo
for i in 1 2 3 4 5 6 7 8 9 10; do
echo $i >> foo
hg ci -m $i
done
cd ..
# create one repo with a shorter history
hg clone -r 0 source1 source2
cd source2
echo a >> foo
hg ci -m a
cd ..
# create a third repo to pull both other repos into it
hg init corrupted
cd corrupted
# use a hook to make the second pull start while the first one is still running
echo '[hooks]' >> .hg/hgrc
echo 'prechangegroup = sleep 5' >> .hg/hgrc
# start a pull...
hg pull ../source1 &
# ... and start another pull before the first one has finished
sleep 1
hg pull ../source2 2>/dev/null
# see the result
wait
hg verify