diff --git a/hgext/fsmonitor/__init__.py b/hgext/fsmonitor/__init__.py --- a/hgext/fsmonitor/__init__.py +++ b/hgext/fsmonitor/__init__.py @@ -132,6 +132,7 @@ util, ) from mercurial import match as matchmod +from mercurial.utils.stringutil import forcebytestr from . import ( pywatchman, @@ -192,7 +193,7 @@ v[b"version"], ) except watchmanclient.Unavailable as e: - err = str(e) + err = forcebytestr(e) fm.condwrite( err, b"fsmonitor-watchman-error", diff --git a/hgext/fsmonitor/watchmanclient.py b/hgext/fsmonitor/watchmanclient.py --- a/hgext/fsmonitor/watchmanclient.py +++ b/hgext/fsmonitor/watchmanclient.py @@ -10,6 +10,7 @@ import getpass from mercurial import util +from mercurial.utils.stringutil import forcebytestr from . import pywatchman @@ -22,7 +23,7 @@ self.warn = False self.invalidate = invalidate - def __str__(self): + def __bytes__(self): if self.warn: return b'warning: Watchman unavailable: %s' % self.msg else: @@ -100,7 +101,7 @@ raise WatchmanNoRoot(self._root, ex.msg) raise Unavailable(ex.msg) except pywatchman.WatchmanError as ex: - raise Unavailable(str(ex)) + raise Unavailable(forcebytestr(ex)) def command(self, *args): try: