# HG changeset patch # User FUJIWARA Katsunori # Date 2018-10-12 07:45:46 # Node ID 6b1a8c396b05b5b9cc52959d537684b15b539d64 # Parent b7ba1cfba1741d3f3930bf7f7228e708b67fb6ac fsmonitor: use vfs instead of opener (issue5938) "opener" of localrepository object was dropped at Mercurial 4.3 (or a7e210167c28). "vfs" should be used instead. wlock is required to write into a file under .hg directory. For efficiency, we should change _cmpsets() from: 1. acquire wlock 2. open log file under .hg directory with write mode 3. compare between result of watchman and Mercurial's dirstate logic 4. write out error info into a file, if error is detected 5. release wlock to: 1. compare between result of watchman and Mercurial's dirstate logic 2. acquire wlock, if error is detected 3. open and write error info into a file 4. release wlock But this is another issue. diff --git a/hgext/fsmonitor/__init__.py b/hgext/fsmonitor/__init__.py --- a/hgext/fsmonitor/__init__.py +++ b/hgext/fsmonitor/__init__.py @@ -460,7 +460,7 @@ def overridestatus( f = open(fn, 'wb') else: fn = 'fsmonitorfail.log' - f = self.opener(fn, 'wb') + f = self.vfs.open(fn, 'wb') except (IOError, OSError): self.ui.warn(_('warning: unable to write to %s\n') % fn) return @@ -564,8 +564,10 @@ def overridestatus( self.ui.fout, self.ui.ferr = fout, ferr # clean isn't tested since it's set to True above - _cmpsets([modified, added, removed, deleted, unknown, ignored, clean], - rv2) + with self.wlock(): + _cmpsets( + [modified, added, removed, deleted, unknown, ignored, clean], + rv2) modified, added, removed, deleted, unknown, ignored, clean = rv2 return scmutil.status(