inotify: do not rely on stat(.hg/dirstate) to invalidate our dirstate
stat() is not reliable when several events happen quickly. Which means
that if two hg actions occur in the same second, stat() result will not
reflect the second change. And only _one_ invalidate() call was done.
Also ignore the events that occur when wlock is held, since wlock release
will trigger a full rescan anyway.
Fixes 17 run-tests.py --inotify tests.
#!/bin/sh
CONTRIBDIR=$TESTDIR/../contrib
echo % prepare repo-a
mkdir repo-a
cd repo-a
hg init
echo this is file a > a
hg add a
hg commit -m first
echo adding to file a >> a
hg commit -m second
echo adding more to file a >> a
hg commit -m third
hg verify
echo
echo % dumping revlog of file a to stdout
python $CONTRIBDIR/dumprevlog .hg/store/data/a.i
echo % dumprevlog done
echo
echo % dump all revlogs to file repo.dump
find .hg/store -name "*.i" | sort | xargs python $CONTRIBDIR/dumprevlog > ../repo.dump
cd ..
mkdir repo-b
cd repo-b
hg init
echo
echo % undumping into repo-b
python $CONTRIBDIR/undumprevlog < ../repo.dump
echo % undumping done
cd ..
echo
echo % clone --pull repo-b repo-c to rebuild fncache
hg clone --pull -U repo-b repo-c
cd repo-c
echo
echo % verify repo-c
hg verify
cd ..
echo
echo % comparing repos
hg -R repo-c incoming repo-a
hg -R repo-a incoming repo-c
exit 0