Correct optimization from 3464f5e77f34; add a test.
If there are two (or more) heads that point to the same .hgtags
node, we can safely skip parsing the file in all but the last head.
(In 3464f5e77f34, we were parsing the file in the first head and
skipping all the others.)
#!/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