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
echo "[extensions]" >> $HGRCPATH
echo "extdiff=" >> $HGRCPATH
hg init a
cd a
echo a > a
echo b > b
hg add
# should diff cloned directories
hg extdiff -o -r $opt
echo "[extdiff]" >> $HGRCPATH
echo "cmd.falabala=echo" >> $HGRCPATH
echo "opts.falabala=diffing" >> $HGRCPATH
hg falabala
hg help falabala
hg ci -d '0 0' -mtest1
echo b >> a
hg ci -d '1 0' -mtest2
# should diff cloned files directly
hg falabala -r 0:1
# test diff during merge
hg update 0
echo c >> c
hg add c
hg ci -m "new branch" -d '1 0'
hg update -C 1
hg merge tip
# should diff cloned file against wc file
hg falabala > out || echo "diff-like tools yield a non-zero exit code"
# cleanup the output since the wc is a tmp directory
sed 's:\(.* \).*\(\/test-extdiff\):\1[tmp]\2:' out