Mercurial > hg
comparison hgext/blackbox.py @ 40764:567e164f89b8
blackbox: initialize logger with repo instance
The blackboxlogger is unusable without a repo. Let's simply initialize it
with a repo instance.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 11 Nov 2018 20:05:38 +0900 |
parents | 3ede5d1724bb |
children | ea2688c84e4b |
comparison
equal
deleted
inserted
replaced
40763:3ede5d1724bb | 40764:567e164f89b8 |
---|---|
137 self.logger.log(ui, event, msg, opts) | 137 self.logger.log(ui, event, msg, opts) |
138 | 138 |
139 _lastlogger = proxylogger() | 139 _lastlogger = proxylogger() |
140 | 140 |
141 class blackboxlogger(object): | 141 class blackboxlogger(object): |
142 def __init__(self, ui): | 142 def __init__(self, ui, repo): |
143 self._repo = None | 143 self._repo = repo |
144 self._trackedevents = set(ui.configlist('blackbox', 'track')) | 144 self._trackedevents = set(ui.configlist('blackbox', 'track')) |
145 | 145 |
146 @property | 146 @property |
147 def _bbvfs(self): | 147 def _bbvfs(self): |
148 vfs = None | 148 vfs = self._repo.vfs |
149 if self._repo: | 149 if not vfs.isdir('.'): |
150 vfs = self._repo.vfs | 150 vfs = None |
151 if not vfs.isdir('.'): | |
152 vfs = None | |
153 return vfs | 151 return vfs |
154 | 152 |
155 def tracked(self, event): | 153 def tracked(self, event): |
156 return b'*' in self._trackedevents or event in self._trackedevents | 154 return b'*' in self._trackedevents or event in self._trackedevents |
157 | 155 |
186 # deactivate this to avoid failed logging again | 184 # deactivate this to avoid failed logging again |
187 self._trackedevents.clear() | 185 self._trackedevents.clear() |
188 ui.debug('warning: cannot write to blackbox.log: %s\n' % | 186 ui.debug('warning: cannot write to blackbox.log: %s\n' % |
189 encoding.strtolocal(err.strerror)) | 187 encoding.strtolocal(err.strerror)) |
190 | 188 |
191 def setrepo(self, repo): | |
192 self._repo = repo | |
193 | |
194 def uipopulate(ui): | 189 def uipopulate(ui): |
195 ui.setlogger(b'blackbox', _lastlogger) | 190 ui.setlogger(b'blackbox', _lastlogger) |
196 | 191 |
197 def reposetup(ui, repo): | 192 def reposetup(ui, repo): |
198 # During 'hg pull' a httppeer repo is created to represent the remote repo. | 193 # During 'hg pull' a httppeer repo is created to represent the remote repo. |
201 if not repo.local(): | 196 if not repo.local(): |
202 return | 197 return |
203 | 198 |
204 # Since blackbox.log is stored in the repo directory, the logger should be | 199 # Since blackbox.log is stored in the repo directory, the logger should be |
205 # instantiated per repository. | 200 # instantiated per repository. |
206 logger = blackboxlogger(ui) | 201 logger = blackboxlogger(ui, repo) |
207 ui.setlogger(b'blackbox', logger) | 202 ui.setlogger(b'blackbox', logger) |
208 logger.setrepo(repo) | |
209 | 203 |
210 # Set _lastlogger even if ui.log is not called. This gives blackbox a | 204 # Set _lastlogger even if ui.log is not called. This gives blackbox a |
211 # fallback place to log | 205 # fallback place to log |
212 if _lastlogger.logger is None: | 206 if _lastlogger.logger is None: |
213 _lastlogger.logger = logger | 207 _lastlogger.logger = logger |