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
echo '[extensions]' >> $HGRCPATH
echo 'hgext.graphlog =' >> $HGRCPATH
echo 'hgext.convert =' >> $HGRCPATH
glog()
{
hg -R "$1" glog --template '{rev} "{desc}" files: {files}\n'
}
hg init source
cd source
echo a > a
echo b > b
hg ci -d '0 0' -qAm '0: add a b'
echo c > c
hg ci -d '1 0' -qAm '1: add c'
hg copy a e
echo b >> b
hg ci -d '2 0' -qAm '2: copy e from a, change b'
hg up -C 0
echo a >> a
hg ci -d '3 0' -qAm '3: change a'
hg merge
hg copy b d
hg ci -d '4 0' -qAm '4: merge 2 and 3, copy d from b'
echo a >> a
hg ci -d '5 0' -qAm '5: change a'
cd ..
echo % convert from null revision
hg convert --config convert.hg.startrev=null source empty
glog empty
echo % convert from zero revision
hg convert --config convert.hg.startrev=0 source full
glog full
echo % convert from merge parent
hg convert --config convert.hg.startrev=1 source conv1
glog conv1
cd conv1
echo % check copy preservation
hg log --follow --copies e
echo % check copy removal on missing parent
hg log --follow --copies d
hg cat -r tip a b
hg -q verify
cd ..
echo % convert from merge
hg convert --config convert.hg.startrev=4 source conv4
glog conv4
cd conv4
hg up -C
hg cat -r tip a b
hg -q verify
cd ..