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
debugwalk()
{
echo "hg debugwalk $@"
hg debugwalk "$@"
echo
}
chdir()
{
echo "cd $@"
cd "$@"
echo
}
mkdir t
cd t
hg init
mkdir -p beans
for b in kidney navy turtle borlotti black pinto; do
echo $b > beans/$b
done
mkdir -p mammals/Procyonidae
for m in cacomistle coatimundi raccoon; do
echo $m > mammals/Procyonidae/$m
done
echo skunk > mammals/skunk
echo fennel > fennel
echo fenugreek > fenugreek
echo fiddlehead > fiddlehead
echo glob:glob > glob:glob
hg addremove
hg commit -m "commit #0" -d "1000000 0"
debugwalk
debugwalk -I.
chdir mammals
debugwalk
debugwalk -X ../beans
debugwalk -I '*k'
debugwalk -I 'glob:*k'
debugwalk -I 'relglob:*k'
debugwalk -I 'relglob:*k' .
debugwalk -I 're:.*k$'
debugwalk -I 'relre:.*k$'
debugwalk -I 'path:beans'
debugwalk -I 'relpath:../beans'
debugwalk .
debugwalk -I.
debugwalk Procyonidae
chdir Procyonidae
debugwalk .
debugwalk ..
chdir ..
debugwalk ../beans
debugwalk .
debugwalk .hg
debugwalk ../.hg
chdir ..
debugwalk -Ibeans
debugwalk -I '{*,{b,m}*/*}k'
debugwalk 'glob:mammals/../beans/b*'
debugwalk '-X*/Procyonidae' mammals
debugwalk path:mammals
debugwalk ..
debugwalk beans/../..
debugwalk .hg
debugwalk beans/../.hg
debugwalk beans/../.hg/data
debugwalk beans/.hg
# Don't know how to test absolute paths without always getting a false
# error.
#debugwalk `pwd`/beans
#debugwalk `pwd`/..
debugwalk glob:\*
debugwalk 'glob:**e'
debugwalk 're:.*[kb]$'
debugwalk path:beans/black
debugwalk path:beans//black
debugwalk relglob:Procyonidae
debugwalk 'relglob:Procyonidae/**'
debugwalk 'relglob:Procyonidae/**' fennel
debugwalk beans 'glob:beans/*'
debugwalk 'glob:mamm**'
debugwalk 'glob:mamm**' fennel
debugwalk 'glob:j*'
debugwalk NOEXIST
mkfifo fifo
debugwalk fifo
rm fenugreek
debugwalk fenugreek
hg rm fenugreek
debugwalk fenugreek
touch new
debugwalk new
mkdir ignored
touch ignored/file
echo '^ignored$' > .hgignore
debugwalk ignored
debugwalk ignored/file
chdir ..
debugwalk -R t t/mammals/skunk
mkdir t2
chdir t2
debugwalk -R ../t ../t/mammals/skunk
debugwalk --cwd ../t mammals/skunk