path_auditor: cache names of audited directories
We use a separate cache to avoid problems with
audit = path_auditor(repo.root)
audit("subrepo")
audit("subrepo/file")
whitelisting "subrepo" (which is fine) and then using the same whitelist
with "subrepo/file" (which is not fine).
Since we create a separate path_auditor for every path on the command line,
a "hg add dir/a dir/b dir/c" will still lstat dir 3 times just to audit
the paths.
#!/bin/sh
"$TESTDIR/hghave" symlink || exit 80
origdir=`pwd`
cat >> readlink.py <<EOF
import os
import sys
for f in sys.argv[1:]:
print f, '->', os.readlink(f)
EOF
hg init repo
cd repo
ln -s nothing dangling
hg ci -qAm 'add symlink'
hg archive -t files ../archive
hg archive -t tar -p tar ../archive.tar
hg archive -t zip -p zip ../archive.zip
echo '% files'
cd "$origdir"
cd archive
python ../readlink.py dangling
echo '% tar'
cd "$origdir"
tar xf archive.tar
cd tar
python ../readlink.py dangling
echo '% zip'
cd "$origdir"
unzip archive.zip > /dev/null
cd zip
python ../readlink.py dangling