changeset 9855:f47c0881b16e

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.
author Nicolas Dumazet <nicdumz.commits@gmail.com>
date Wed, 11 Nov 2009 14:38:59 +0900
parents 95e1867f765b
children ed362d41d1f6
files hgext/inotify/__init__.py tests/test-inotify-dirty-dirstate tests/test-inotify-dirty-dirstate.out
diffstat 3 files changed, 86 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/inotify/__init__.py	Fri Nov 13 08:31:10 2009 +0900
+++ b/hgext/inotify/__init__.py	Wed Nov 11 14:38:59 2009 +0900
@@ -46,7 +46,7 @@
             files = match.files()
             if '.' in files:
                 files = []
-            if self._inotifyon and not ignored:
+            if self._inotifyon and not ignored and not self._dirty:
                 cli = client(ui, repo)
                 try:
                     result = cli.statusquery(files, match, False,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-inotify-dirty-dirstate	Wed Nov 11 14:38:59 2009 +0900
@@ -0,0 +1,67 @@
+#!/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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-inotify-dirty-dirstate.out	Wed Nov 11 14:38:59 2009 +0900
@@ -0,0 +1,18 @@
+% issue1810: inotify and fetch
+adding foo
+updating working directory
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+adding bar
+adding spam
+% issue1719: inotify and mq
+% inserve
+? hg.pid
+popping test.patch
+patch queue now empty
+% st should not output anything
+? hg.pid
+applying test.patch
+now at: test.patch
+% st should not output anything
+? hg.pid
+? hg.pid