Mercurial > hg-stable
changeset 7302:972737252d05
inotify: server raising an error when removing a file (issue1371)
When a file is deleted via hg rm <file> the dirstate marks the file with a
status of 'r'. The physical file has been deleted, but the inotify server
tries to do a stat on the file after it's been removed.
Patch catches the exception and correctly call updatestatus()
author | Gerard Korsten <soonkia77@gmail.com> |
---|---|
date | Sat, 01 Nov 2008 14:05:13 +0200 |
parents | 00d76fa3ffba |
children | d14c25e823ba |
files | hgext/inotify/server.py tests/test-inotify-issue1371 tests/test-inotify-issue1371.out |
diffstat | 3 files changed, 57 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/inotify/server.py Sat Nov 01 15:15:14 2008 +0300 +++ b/hgext/inotify/server.py Sat Nov 01 14:05:13 2008 +0200 @@ -337,10 +337,11 @@ for wfn, state in ds.iteritems(): if not wfn.startswith(wtopdir): continue - status = state[0] - st = self.stat(wfn) - if status == 'r' and not st: - self.updatestatus(wfn, st, status=status) + try: + st = self.stat(wfn) + except OSError: + status = state[0] + self.updatestatus(wfn, None, status=status) else: self.updatestatus(wfn, st) self.check_deleted('!')
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-inotify-issue1371 Sat Nov 01 14:05:13 2008 +0200 @@ -0,0 +1,36 @@ +#!/bin/sh + +"$TESTDIR/hghave" inotify || exit 80 + +hg init + +touch a b c d e f + +echo "[extensions]" >> $HGRCPATH +echo "inotify=" >> $HGRCPATH +echo inserv1 + +echo % inserve +hg inserve -d --pid-file=hg.pid 2>&1 +cat hg.pid >> "$DAEMON_PIDS" + +hg ci -Am m + + +# let the daemon finish its stuff +sleep 1 + +#Need to test all file opperations +hg rm a +rm b +echo c >> c +touch g +hg add g +hg mv e h +hg status + + +sleep 5 +echo "Are we able to kill the service? if not, the service died on some error" +kill `cat hg.pid` +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-inotify-issue1371.out Sat Nov 01 14:05:13 2008 +0200 @@ -0,0 +1,16 @@ +inserv1 +% inserve +adding a +adding b +adding c +adding d +adding e +adding f +adding hg.pid +M c +A g +A h +R a +R e +! b +Are we able to kill the service? if not, the service died on some error