performance: do not stat() things when not required
Ignore unknown files if we don't need them (eg in hg diff).
It slows things down a little bit for big trees (kernel repo), since _join()
is called for each file instead of for each directory.
fix issue567
#!/bin/sh
hg init
echo % should fail
hg add .hg/00changelog.i
mkdir a
echo a > a/a
hg ci -Ama
ln -s a b
echo b > a/b
echo % should fail
hg add b/b
echo % should succeed
hg add b
echo % should still fail - maybe
hg add b/b
exit 0