D5589: watchman: add the possibility to set the exact watchman binary location
lothiraldan (Boris Feld)
phabricator at mercurial-scm.org
Wed Feb 13 15:03:55 UTC 2019
lothiraldan updated this revision to Diff 14070.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D5589?vs=13414&id=14070
REVISION DETAIL
https://phab.mercurial-scm.org/D5589
AFFECTED FILES
hgext/fsmonitor/__init__.py
hgext/fsmonitor/pywatchman/__init__.py
hgext/fsmonitor/watchmanclient.py
CHANGE DETAILS
diff --git a/hgext/fsmonitor/watchmanclient.py b/hgext/fsmonitor/watchmanclient.py
--- a/hgext/fsmonitor/watchmanclient.py
+++ b/hgext/fsmonitor/watchmanclient.py
@@ -82,9 +82,11 @@
try:
if self._watchmanclient is None:
self._firsttime = False
+ watchman_exe = self._ui.configpath('fsmonitor', 'watchman_exe')
self._watchmanclient = pywatchman.client(
timeout=self._timeout,
- useImmutableBser=True)
+ useImmutableBser=True,
+ watchman_exe=watchman_exe)
return self._watchmanclient.query(*watchmanargs)
except pywatchman.CommandError as ex:
if 'unable to resolve root' in ex.msg:
diff --git a/hgext/fsmonitor/pywatchman/__init__.py b/hgext/fsmonitor/pywatchman/__init__.py
--- a/hgext/fsmonitor/pywatchman/__init__.py
+++ b/hgext/fsmonitor/pywatchman/__init__.py
@@ -317,7 +317,7 @@
""" local unix domain socket transport """
sock = None
- def __init__(self, sockpath, timeout):
+ def __init__(self, sockpath, timeout, watchman_exe):
self.sockpath = sockpath
self.timeout = timeout
@@ -397,7 +397,7 @@
class WindowsNamedPipeTransport(Transport):
""" connect to a named pipe """
- def __init__(self, sockpath, timeout):
+ def __init__(self, sockpath, timeout, watchman_exe):
self.sockpath = sockpath
self.timeout = int(math.ceil(timeout * 1000))
self._iobuf = None
@@ -563,9 +563,10 @@
proc = None
closed = True
- def __init__(self, sockpath, timeout):
+ def __init__(self, sockpath, timeout, watchman_exe):
self.sockpath = sockpath
self.timeout = timeout
+ self.watchman_exe = watchman_exe
def close(self):
if self.proc:
@@ -579,7 +580,7 @@
if self.proc:
return self.proc
args = [
- 'watchman',
+ self.watchman_exe,
'--sockname={0}'.format(self.sockpath),
'--logfile=/BOGUS',
'--statefile=/BOGUS',
@@ -756,17 +757,20 @@
unilateral = ['log', 'subscription']
tport = None
useImmutableBser = None
+ watchman_exe = None
def __init__(self,
sockpath=None,
timeout=1.0,
transport=None,
sendEncoding=None,
recvEncoding=None,
- useImmutableBser=False):
+ useImmutableBser=False,
+ watchman_exe=None):
self.sockpath = sockpath
self.timeout = timeout
self.useImmutableBser = useImmutableBser
+ self.watchman_exe = watchman_exe
if inspect.isclass(transport) and issubclass(transport, Transport):
self.transport = transport
@@ -817,7 +821,7 @@
if path:
return path
- cmd = ['watchman', '--output-encoding=bser', 'get-sockname']
+ cmd = [self.watchman_exe, '--output-encoding=bser', 'get-sockname']
try:
args = dict(stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
@@ -858,7 +862,7 @@
if self.sockpath is None:
self.sockpath = self._resolvesockname()
- self.tport = self.transport(self.sockpath, self.timeout)
+ self.tport = self.transport(self.sockpath, self.timeout, self.watchman_exe)
self.sendConn = self.sendCodec(self.tport)
self.recvConn = self.recvCodec(self.tport)
diff --git a/hgext/fsmonitor/__init__.py b/hgext/fsmonitor/__init__.py
--- a/hgext/fsmonitor/__init__.py
+++ b/hgext/fsmonitor/__init__.py
@@ -164,6 +164,9 @@
configitem('fsmonitor', 'enable_on_non_interactive',
default=True,
)
+configitem('fsmonitor', 'watchman_exe',
+ default='watchman',
+)
configitem('fsmonitor', 'verbose',
default=True,
)
To: lothiraldan, #hg-reviewers
Cc: indygreg, mjpieters, mercurial-devel
More information about the Mercurial-devel
mailing list