equal
deleted
inserted
replaced
7 |
7 |
8 from __future__ import absolute_import |
8 from __future__ import absolute_import |
9 |
9 |
10 import getpass |
10 import getpass |
11 |
11 |
12 from mercurial import util |
12 from mercurial import ( |
13 from mercurial.utils import procutil |
13 encoding, |
|
14 util, |
|
15 ) |
|
16 from mercurial.utils import ( |
|
17 procutil, |
|
18 stringutil, |
|
19 ) |
14 |
20 |
15 from . import pywatchman |
21 from . import pywatchman |
16 |
22 |
17 |
23 |
18 class Unavailable(Exception): |
24 class Unavailable(Exception): |
21 self.warn = warn |
27 self.warn = warn |
22 if self.msg == b'timed out waiting for response': |
28 if self.msg == b'timed out waiting for response': |
23 self.warn = False |
29 self.warn = False |
24 self.invalidate = invalidate |
30 self.invalidate = invalidate |
25 |
31 |
26 def __str__(self): |
32 def __bytes__(self): |
27 if self.warn: |
33 if self.warn: |
28 return b'warning: Watchman unavailable: %s' % self.msg |
34 return b'warning: Watchman unavailable: %s' % self.msg |
29 else: |
35 else: |
30 return b'Watchman unavailable: %s' % self.msg |
36 return b'Watchman unavailable: %s' % self.msg |
|
37 |
|
38 __str__ = encoding.strmethod(__bytes__) |
31 |
39 |
32 |
40 |
33 class WatchmanNoRoot(Unavailable): |
41 class WatchmanNoRoot(Unavailable): |
34 def __init__(self, root, msg): |
42 def __init__(self, root, msg): |
35 self.root = root |
43 self.root = root |
96 binpath=procutil.tonativestr(watchman_exe), |
104 binpath=procutil.tonativestr(watchman_exe), |
97 ) |
105 ) |
98 return self._watchmanclient.query(*watchmanargs) |
106 return self._watchmanclient.query(*watchmanargs) |
99 except pywatchman.CommandError as ex: |
107 except pywatchman.CommandError as ex: |
100 if b'unable to resolve root' in ex.msg: |
108 if b'unable to resolve root' in ex.msg: |
101 raise WatchmanNoRoot(self._root, ex.msg) |
109 raise WatchmanNoRoot( |
|
110 self._root, stringutil.forcebytestr(ex.msg) |
|
111 ) |
102 raise Unavailable(ex.msg) |
112 raise Unavailable(ex.msg) |
103 except pywatchman.WatchmanError as ex: |
113 except pywatchman.WatchmanError as ex: |
104 raise Unavailable(str(ex)) |
114 raise Unavailable(stringutil.forcebytestr(ex)) |
105 |
115 |
106 def command(self, *args): |
116 def command(self, *args): |
107 try: |
117 try: |
108 try: |
118 try: |
109 return self._command(*args) |
119 return self._command(*args) |