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.
% create source repository
adding a
% fork source repository
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding b
% update source repository
% merge repositories
pulling from ../t2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
M b
% rename b as c
A c
R b
% rename back c as b
M b
% test issue 1476
adding a
adding b1
adding b2
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
adding c1
adding c2
created new head
% merge heads
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
% commit issue 1476
copies: c2 (c1)
rolling back last transaction
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
% merge heads again
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
% commit issue 1476 with a rename on the other side
copies: b2 (b1)