inotify: Do not access inotify when dirstate is dirty (issue1811)
Original patch was provided by Simon Heimberg
It delegates dirstate computation to dirstate.status when dirstate is dirty:
better be slow from time to time instead of using wrong data.
This solves issue1719. As the last component, issue1810, is still not solved,
test-inotify-dirty-dirstate will fail for now. It emphasizes a regression due
to 7c01599dd340:
changeset: 9515:7c01599dd340
user: Nicolas Dumazet <nicdumz.commits@gmail.com>
date: Sun Aug 16 11:11:37 2009 +0900
summary: inotify: use cmdutil.service instead of local daemonizing code
Ancestors of 7c01599dd30 are passing the test, when applied this patch.
Regression has to be investigated, but this patch is important since it affects
often mq operations.
#!/bin/sh
# issues when status queries are issued when dirstate is dirty
"$TESTDIR/hghave" inotify || exit 80
echo "[extensions]" >> $HGRCPATH
echo "inotify=" >> $HGRCPATH
echo "fetch=" >> $HGRCPATH
echo % issue1810: inotify and fetch
mkdir test; cd test
hg init
echo foo > foo
hg add
hg ci -m foo
cd ..
hg clone test test2
cd test2
echo bar > bar
hg add
hg ci -m bar
cd ../test
echo spam > spam
hg add
hg ci -m spam
cd ../test2
hg st
# abort, outstanding changes
hg fetch -q
hg st
cd ..
echo % issue1719: inotify and mq
echo "mq=" >> $HGRCPATH
hg init test-1719
cd test-1719
echo % inserve
hg inserve -d --pid-file=hg.pid
cat hg.pid >> "$DAEMON_PIDS"
echo content > file
hg add file
hg qnew -f test.patch
hg status
hg qpop
echo % st should not output anything
hg status
hg qpush
echo % st should not output anything
hg status
hg qrefresh
hg status