Show More
@@ -121,13 +121,12 b' def _importext(name, path=None, reportfu' | |||
|
121 | 121 | return mod |
|
122 | 122 | |
|
123 | 123 | def _reportimporterror(ui, err, failed, next): |
|
124 |
# note: this ui. |
|
|
124 | # note: this ui.log happens before --debug is processed, | |
|
125 | 125 | # Use --config ui.debug=1 to see them. |
|
126 | if ui.configbool('devel', 'debug.extensions'): | |
|
127 | ui.debug('debug.extensions: - could not import %s (%s): trying %s\n' | |
|
128 | % (failed, stringutil.forcebytestr(err), next)) | |
|
129 |
|
|
|
130 | ui.traceback() | |
|
126 | ui.log(b'extension', b' - could not import %s (%s): trying %s\n', | |
|
127 | failed, stringutil.forcebytestr(err), next) | |
|
128 | if ui.debugflag and ui.configbool('devel', 'debug.extensions'): | |
|
129 | ui.traceback() | |
|
131 | 130 | |
|
132 | 131 | def _rejectunicode(name, xs): |
|
133 | 132 | if isinstance(xs, (list, set, tuple)): |
@@ -166,7 +165,7 b' def _validatetables(ui, mod):' | |||
|
166 | 165 | _rejectunicode(t, o._table) |
|
167 | 166 | _validatecmdtable(ui, getattr(mod, 'cmdtable', {})) |
|
168 | 167 | |
|
169 |
def load(ui, name, path, |
|
|
168 | def load(ui, name, path, loadingtime=None): | |
|
170 | 169 | if name.startswith('hgext.') or name.startswith('hgext/'): |
|
171 | 170 | shortname = name[6:] |
|
172 | 171 | else: |
@@ -175,11 +174,11 b' def load(ui, name, path, log=lambda *a: ' | |||
|
175 | 174 | return None |
|
176 | 175 | if shortname in _extensions: |
|
177 | 176 | return _extensions[shortname] |
|
178 | log(' - loading extension: %s\n', shortname) | |
|
177 | ui.log(b'extension', b' - loading extension: %s\n', shortname) | |
|
179 | 178 | _extensions[shortname] = None |
|
180 | 179 | with util.timedcm('load extension %s', shortname) as stats: |
|
181 | 180 | mod = _importext(name, path, bind(_reportimporterror, ui)) |
|
182 | log(' > %s extension loaded in %s\n', shortname, stats) | |
|
181 | ui.log(b'extension', b' > %s extension loaded in %s\n', shortname, stats) | |
|
183 | 182 | if loadingtime is not None: |
|
184 | 183 | loadingtime[shortname] += stats.elapsed |
|
185 | 184 | |
@@ -193,16 +192,17 b' def load(ui, name, path, log=lambda *a: ' | |||
|
193 | 192 | 'of Mercurial (current: %s); disabling)\n') |
|
194 | 193 | ui.warn(msg % (shortname, minver, util.version())) |
|
195 | 194 | return |
|
196 | log(' - validating extension tables: %s\n', shortname) | |
|
195 | ui.log(b'extension', b' - validating extension tables: %s\n', shortname) | |
|
197 | 196 | _validatetables(ui, mod) |
|
198 | 197 | |
|
199 | 198 | _extensions[shortname] = mod |
|
200 | 199 | _order.append(shortname) |
|
201 |
log(' - invoking registered callbacks: %s\n', |
|
|
200 | ui.log(b'extension', b' - invoking registered callbacks: %s\n', | |
|
201 | shortname) | |
|
202 | 202 | with util.timedcm('callbacks extension %s', shortname) as stats: |
|
203 | 203 | for fn in _aftercallbacks.get(shortname, []): |
|
204 | 204 | fn(loaded=True) |
|
205 | log(' > callbacks completed in %s\n', stats) | |
|
205 | ui.log(b'extension', b' > callbacks completed in %s\n', stats) | |
|
206 | 206 | return mod |
|
207 | 207 | |
|
208 | 208 | def _runuisetup(name, ui): |
@@ -235,28 +235,25 b' def _runextsetup(name, ui):' | |||
|
235 | 235 | return True |
|
236 | 236 | |
|
237 | 237 | def loadall(ui, whitelist=None): |
|
238 | if ui.configbool('devel', 'debug.extensions'): | |
|
239 | log = lambda msg, *values: ui.debug('debug.extensions: ', | |
|
240 | msg % values, label='debug.extensions') | |
|
241 | else: | |
|
242 | log = lambda *a, **kw: None | |
|
243 | 238 | loadingtime = collections.defaultdict(int) |
|
244 | 239 | result = ui.configitems("extensions") |
|
245 | 240 | if whitelist is not None: |
|
246 | 241 | result = [(k, v) for (k, v) in result if k in whitelist] |
|
247 | 242 | newindex = len(_order) |
|
248 | log('loading %sextensions\n', 'additional ' if newindex else '') | |
|
249 | log('- processing %d entries\n', len(result)) | |
|
243 | ui.log(b'extension', b'loading %sextensions\n', | |
|
244 | 'additional ' if newindex else '') | |
|
245 | ui.log(b'extension', b'- processing %d entries\n', len(result)) | |
|
250 | 246 | with util.timedcm('load all extensions') as stats: |
|
251 | 247 | for (name, path) in result: |
|
252 | 248 | if path: |
|
253 | 249 | if path[0:1] == '!': |
|
254 | 250 | if name not in _disabledextensions: |
|
255 |
log(' |
|
|
251 | ui.log(b'extension', | |
|
252 | b' - skipping disabled extension: %s\n', name) | |
|
256 | 253 | _disabledextensions[name] = path[1:] |
|
257 | 254 | continue |
|
258 | 255 | try: |
|
259 |
load(ui, name, path, |
|
|
256 | load(ui, name, path, loadingtime) | |
|
260 | 257 | except Exception as inst: |
|
261 | 258 | msg = stringutil.forcebytestr(inst) |
|
262 | 259 | if path: |
@@ -269,8 +266,8 b' def loadall(ui, whitelist=None):' | |||
|
269 | 266 | ui.warn(_("*** (%s)\n") % inst.hint) |
|
270 | 267 | ui.traceback() |
|
271 | 268 | |
|
272 | log('> loaded %d extensions, total time %s\n', | |
|
273 | len(_order) - newindex, stats) | |
|
269 | ui.log(b'extension', b'> loaded %d extensions, total time %s\n', | |
|
270 | len(_order) - newindex, stats) | |
|
274 | 271 | # list of (objname, loadermod, loadername) tuple: |
|
275 | 272 | # - objname is the name of an object in extension module, |
|
276 | 273 | # from which extra information is loaded |
@@ -283,52 +280,55 b' def loadall(ui, whitelist=None):' | |||
|
283 | 280 | ('configtable', configitems, 'loadconfigtable'), |
|
284 | 281 | ] |
|
285 | 282 | |
|
286 | log('- loading configtable attributes\n') | |
|
283 | ui.log(b'extension', b'- loading configtable attributes\n') | |
|
287 | 284 | _loadextra(ui, newindex, earlyextraloaders) |
|
288 | 285 | |
|
289 | 286 | broken = set() |
|
290 | log('- executing uisetup hooks\n') | |
|
287 | ui.log(b'extension', b'- executing uisetup hooks\n') | |
|
291 | 288 | with util.timedcm('all uisetup') as alluisetupstats: |
|
292 | 289 | for name in _order[newindex:]: |
|
293 | log(' - running uisetup for %s\n', name) | |
|
290 | ui.log(b'extension', b' - running uisetup for %s\n', name) | |
|
294 | 291 | with util.timedcm('uisetup %s', name) as stats: |
|
295 | 292 | if not _runuisetup(name, ui): |
|
296 |
log(' |
|
|
293 | ui.log(b'extension', | |
|
294 | b' - the %s extension uisetup failed\n', name) | |
|
297 | 295 | broken.add(name) |
|
298 | log(' > uisetup for %s took %s\n', name, stats) | |
|
296 | ui.log(b'extension', b' > uisetup for %s took %s\n', name, stats) | |
|
299 | 297 | loadingtime[name] += stats.elapsed |
|
300 | log('> all uisetup took %s\n', alluisetupstats) | |
|
298 | ui.log(b'extension', b'> all uisetup took %s\n', alluisetupstats) | |
|
301 | 299 | |
|
302 | log('- executing extsetup hooks\n') | |
|
300 | ui.log(b'extension', b'- executing extsetup hooks\n') | |
|
303 | 301 | with util.timedcm('all extsetup') as allextetupstats: |
|
304 | 302 | for name in _order[newindex:]: |
|
305 | 303 | if name in broken: |
|
306 | 304 | continue |
|
307 | log(' - running extsetup for %s\n', name) | |
|
305 | ui.log(b'extension', b' - running extsetup for %s\n', name) | |
|
308 | 306 | with util.timedcm('extsetup %s', name) as stats: |
|
309 | 307 | if not _runextsetup(name, ui): |
|
310 |
log(' |
|
|
308 | ui.log(b'extension', | |
|
309 | b' - the %s extension extsetup failed\n', name) | |
|
311 | 310 | broken.add(name) |
|
312 | log(' > extsetup for %s took %s\n', name, stats) | |
|
311 | ui.log(b'extension', b' > extsetup for %s took %s\n', name, stats) | |
|
313 | 312 | loadingtime[name] += stats.elapsed |
|
314 | log('> all extsetup took %s\n', allextetupstats) | |
|
313 | ui.log(b'extension', b'> all extsetup took %s\n', allextetupstats) | |
|
315 | 314 | |
|
316 | 315 | for name in broken: |
|
317 | log(' - disabling broken %s extension\n', name) | |
|
316 | ui.log(b'extension', b' - disabling broken %s extension\n', name) | |
|
318 | 317 | _extensions[name] = None |
|
319 | 318 | |
|
320 | 319 | # Call aftercallbacks that were never met. |
|
321 | log('- executing remaining aftercallbacks\n') | |
|
320 | ui.log(b'extension', b'- executing remaining aftercallbacks\n') | |
|
322 | 321 | with util.timedcm('aftercallbacks') as stats: |
|
323 | 322 | for shortname in _aftercallbacks: |
|
324 | 323 | if shortname in _extensions: |
|
325 | 324 | continue |
|
326 | 325 | |
|
327 | 326 | for fn in _aftercallbacks[shortname]: |
|
328 |
log(' |
|
|
329 | shortname) | |
|
327 | ui.log(b'extension', | |
|
328 | b' - extension %s not loaded, notify callbacks\n', | |
|
329 | shortname) | |
|
330 | 330 | fn(loaded=False) |
|
331 | log('> remaining aftercallbacks completed in %s\n', stats) | |
|
331 | ui.log(b'extension', b'> remaining aftercallbacks completed in %s\n', stats) | |
|
332 | 332 | |
|
333 | 333 | # loadall() is called multiple times and lingering _aftercallbacks |
|
334 | 334 | # entries could result in double execution. See issue4646. |
@@ -352,7 +352,7 b' def loadall(ui, whitelist=None):' | |||
|
352 | 352 | # - loadermod is the module where loader is placed |
|
353 | 353 | # - loadername is the name of the function, |
|
354 | 354 | # which takes (ui, extensionname, extraobj) arguments |
|
355 | log('- loading extension registration objects\n') | |
|
355 | ui.log(b'extension', b'- loading extension registration objects\n') | |
|
356 | 356 | extraloaders = [ |
|
357 | 357 | ('cmdtable', commands, 'loadcmdtable'), |
|
358 | 358 | ('colortable', color, 'loadcolortable'), |
@@ -365,14 +365,15 b' def loadall(ui, whitelist=None):' | |||
|
365 | 365 | ] |
|
366 | 366 | with util.timedcm('load registration objects') as stats: |
|
367 | 367 | _loadextra(ui, newindex, extraloaders) |
|
368 |
log('> extension registration object loading took %s\n', |
|
|
368 | ui.log(b'extension', b'> extension registration object loading took %s\n', | |
|
369 | stats) | |
|
369 | 370 | |
|
370 | 371 | # Report per extension loading time (except reposetup) |
|
371 | 372 | for name in sorted(loadingtime): |
|
372 |
extension |
|
|
373 |
|
|
|
373 | ui.log(b'extension', b'> extension %s take a total of %s to load\n', | |
|
374 | name, util.timecount(loadingtime[name])) | |
|
374 | 375 | |
|
375 | log('extension loading complete\n') | |
|
376 | ui.log(b'extension', b'extension loading complete\n') | |
|
376 | 377 | |
|
377 | 378 | def _loadextra(ui, newindex, extraloaders): |
|
378 | 379 | for name in _order[newindex:]: |
@@ -160,23 +160,19 b' def _peerorrepo(ui, path, create=False, ' | |||
|
160 | 160 | obj = _peerlookup(path).instance(ui, path, create, intents=intents, |
|
161 | 161 | createopts=createopts) |
|
162 | 162 | ui = getattr(obj, "ui", ui) |
|
163 | if ui.configbool('devel', 'debug.extensions'): | |
|
164 | log = lambda msg, *values: ui.debug('debug.extensions: ', | |
|
165 | msg % values, label='debug.extensions') | |
|
166 | else: | |
|
167 | log = lambda *a, **kw: None | |
|
168 | 163 | for f in presetupfuncs or []: |
|
169 | 164 | f(ui, obj) |
|
170 | log('- executing reposetup hooks\n') | |
|
165 | ui.log(b'extension', b'- executing reposetup hooks\n') | |
|
171 | 166 | with util.timedcm('all reposetup') as allreposetupstats: |
|
172 | 167 | for name, module in extensions.extensions(ui): |
|
173 |
log(' - running reposetup for %s\n' |
|
|
168 | ui.log(b'extension', b' - running reposetup for %s\n', name) | |
|
174 | 169 | hook = getattr(module, 'reposetup', None) |
|
175 | 170 | if hook: |
|
176 | 171 | with util.timedcm('reposetup %r', name) as stats: |
|
177 | 172 | hook(ui, obj) |
|
178 |
log(' > reposetup for %s took %s\n', |
|
|
179 | log('> all reposetup took %s\n', allreposetupstats) | |
|
173 | ui.log(b'extension', b' > reposetup for %s took %s\n', | |
|
174 | name, stats) | |
|
175 | ui.log(b'extension', b'> all reposetup took %s\n', allreposetupstats) | |
|
180 | 176 | if not obj.local(): |
|
181 | 177 | for f in wirepeersetupfuncs: |
|
182 | 178 | f(ui, obj) |
@@ -1,3 +1,7 b'' | |||
|
1 | $ filterlog () { | |
|
2 | > sed -e 's!^[0-9/]* [0-9:]* ([0-9]*)>!YYYY/MM/DD HH:MM:SS (PID)>!' | |
|
3 | > } | |
|
4 | ||
|
1 | 5 | ensure that failing ui.atexit handlers report sensibly |
|
2 | 6 | |
|
3 | 7 | $ cat > $TESTTMP/bailatexit.py <<EOF |
@@ -82,29 +86,30 b' show traceback for ImportError of hgext.' | |||
|
82 | 86 | |
|
83 | 87 | $ (hg help help --traceback --debug --config devel.debug.extensions=yes 2>&1) \ |
|
84 | 88 | > | grep -v '^ ' \ |
|
85 | > | egrep 'extension..[^p]|^Exception|Traceback|ImportError|not import|ModuleNotFound' | |
|
86 | debug.extensions: loading extensions | |
|
87 | debug.extensions: - processing 5 entries | |
|
88 | debug.extensions: - loading extension: gpg | |
|
89 | debug.extensions: > gpg extension loaded in * (glob) | |
|
90 | debug.extensions: - validating extension tables: gpg | |
|
91 | debug.extensions: - invoking registered callbacks: gpg | |
|
92 | debug.extensions: > callbacks completed in * (glob) | |
|
93 | debug.extensions: - loading extension: badext | |
|
89 | > | filterlog \ | |
|
90 | > | egrep 'extension..[^p]|^Exception|Traceback|ImportError|^YYYY|not import|ModuleNotFound' | |
|
91 | YYYY/MM/DD HH:MM:SS (PID)> loading extensions | |
|
92 | YYYY/MM/DD HH:MM:SS (PID)> - processing 5 entries | |
|
93 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension: gpg | |
|
94 | YYYY/MM/DD HH:MM:SS (PID)> > gpg extension loaded in * (glob) | |
|
95 | YYYY/MM/DD HH:MM:SS (PID)> - validating extension tables: gpg | |
|
96 | YYYY/MM/DD HH:MM:SS (PID)> - invoking registered callbacks: gpg | |
|
97 | YYYY/MM/DD HH:MM:SS (PID)> > callbacks completed in * (glob) | |
|
98 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension: badext | |
|
94 | 99 | *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow |
|
95 | 100 | Traceback (most recent call last): |
|
96 | 101 | Exception: bit bucket overflow |
|
97 |
|
|
|
98 |
|
|
|
99 |
|
|
|
100 |
|
|
|
101 |
|
|
|
102 |
|
|
|
103 |
|
|
|
102 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension: baddocext | |
|
103 | YYYY/MM/DD HH:MM:SS (PID)> > baddocext extension loaded in * (glob) | |
|
104 | YYYY/MM/DD HH:MM:SS (PID)> - validating extension tables: baddocext | |
|
105 | YYYY/MM/DD HH:MM:SS (PID)> - invoking registered callbacks: baddocext | |
|
106 | YYYY/MM/DD HH:MM:SS (PID)> > callbacks completed in * (glob) | |
|
107 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension: badext2 | |
|
108 | YYYY/MM/DD HH:MM:SS (PID)> - could not import hgext.badext2 (No module named *badext2*): trying hgext3rd.badext2 (glob) | |
|
104 | 109 | Traceback (most recent call last): |
|
105 | 110 | ImportError: No module named badext2 (no-py3 !) |
|
106 | 111 | ModuleNotFoundError: No module named 'hgext.badext2' (py3 !) |
|
107 |
|
|
|
112 | YYYY/MM/DD HH:MM:SS (PID)> - could not import hgext3rd.badext2 (No module named *badext2*): trying badext2 (glob) | |
|
108 | 113 | Traceback (most recent call last): |
|
109 | 114 | ImportError: No module named badext2 (no-py3 !) |
|
110 | 115 | ModuleNotFoundError: No module named 'hgext.badext2' (py3 !) |
@@ -118,27 +123,27 b' show traceback for ImportError of hgext.' | |||
|
118 | 123 | Traceback (most recent call last): (py3 !) |
|
119 | 124 | ModuleNotFoundError: No module named 'badext2' (py3 !) |
|
120 | 125 | ImportError: No module named badext2 (no-py3 !) |
|
121 |
|
|
|
122 |
|
|
|
123 | debug.extensions: - executing uisetup hooks | |
|
124 |
|
|
|
125 |
|
|
|
126 |
|
|
|
127 |
|
|
|
128 |
|
|
|
129 | debug.extensions: - executing extsetup hooks | |
|
130 |
|
|
|
131 |
|
|
|
132 |
|
|
|
133 |
|
|
|
134 |
|
|
|
135 |
|
|
|
136 |
|
|
|
137 |
|
|
|
138 |
|
|
|
139 |
|
|
|
140 |
|
|
|
141 | debug.extensions: extension loading complete | |
|
126 | YYYY/MM/DD HH:MM:SS (PID)> > loaded 2 extensions, total time * (glob) | |
|
127 | YYYY/MM/DD HH:MM:SS (PID)> - loading configtable attributes | |
|
128 | YYYY/MM/DD HH:MM:SS (PID)> - executing uisetup hooks | |
|
129 | YYYY/MM/DD HH:MM:SS (PID)> - running uisetup for gpg | |
|
130 | YYYY/MM/DD HH:MM:SS (PID)> > uisetup for gpg took * (glob) | |
|
131 | YYYY/MM/DD HH:MM:SS (PID)> - running uisetup for baddocext | |
|
132 | YYYY/MM/DD HH:MM:SS (PID)> > uisetup for baddocext took * (glob) | |
|
133 | YYYY/MM/DD HH:MM:SS (PID)> > all uisetup took * (glob) | |
|
134 | YYYY/MM/DD HH:MM:SS (PID)> - executing extsetup hooks | |
|
135 | YYYY/MM/DD HH:MM:SS (PID)> - running extsetup for gpg | |
|
136 | YYYY/MM/DD HH:MM:SS (PID)> > extsetup for gpg took * (glob) | |
|
137 | YYYY/MM/DD HH:MM:SS (PID)> - running extsetup for baddocext | |
|
138 | YYYY/MM/DD HH:MM:SS (PID)> > extsetup for baddocext took * (glob) | |
|
139 | YYYY/MM/DD HH:MM:SS (PID)> > all extsetup took * (glob) | |
|
140 | YYYY/MM/DD HH:MM:SS (PID)> - executing remaining aftercallbacks | |
|
141 | YYYY/MM/DD HH:MM:SS (PID)> > remaining aftercallbacks completed in * (glob) | |
|
142 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension registration objects | |
|
143 | YYYY/MM/DD HH:MM:SS (PID)> > extension registration object loading took * (glob) | |
|
144 | YYYY/MM/DD HH:MM:SS (PID)> > extension baddocext take a total of * to load (glob) | |
|
145 | YYYY/MM/DD HH:MM:SS (PID)> > extension gpg take a total of * to load (glob) | |
|
146 | YYYY/MM/DD HH:MM:SS (PID)> extension loading complete | |
|
142 | 147 | #endif |
|
143 | 148 | |
|
144 | 149 | confirm that there's no crash when an extension's documentation is bad |
@@ -41,54 +41,58 b' Test basic extension support' | |||
|
41 | 41 | $ echo '[extensions]' >> $HGRCPATH |
|
42 | 42 | $ echo "foobar = $abspath" >> $HGRCPATH |
|
43 | 43 | |
|
44 | $ filterlog () { | |
|
45 | > sed -e 's!^[0-9/]* [0-9:]* ([0-9]*)>!YYYY/MM/DD HH:MM:SS (PID)>!' | |
|
46 | > } | |
|
47 | ||
|
44 | 48 | Test extension setup timings |
|
45 | 49 | |
|
46 | $ hg foo --traceback --config devel.debug.extensions=yes --debug 2>&1 | |
|
47 | debug.extensions: loading extensions | |
|
48 | debug.extensions: - processing 1 entries | |
|
49 |
|
|
|
50 |
|
|
|
51 |
|
|
|
52 |
|
|
|
53 |
|
|
|
54 |
|
|
|
55 |
|
|
|
56 | debug.extensions: - executing uisetup hooks | |
|
57 |
|
|
|
50 | $ hg foo --traceback --config devel.debug.extensions=yes --debug 2>&1 | filterlog | |
|
51 | YYYY/MM/DD HH:MM:SS (PID)> loading extensions | |
|
52 | YYYY/MM/DD HH:MM:SS (PID)> - processing 1 entries | |
|
53 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension: foobar | |
|
54 | YYYY/MM/DD HH:MM:SS (PID)> > foobar extension loaded in * (glob) | |
|
55 | YYYY/MM/DD HH:MM:SS (PID)> - validating extension tables: foobar | |
|
56 | YYYY/MM/DD HH:MM:SS (PID)> - invoking registered callbacks: foobar | |
|
57 | YYYY/MM/DD HH:MM:SS (PID)> > callbacks completed in * (glob) | |
|
58 | YYYY/MM/DD HH:MM:SS (PID)> > loaded 1 extensions, total time * (glob) | |
|
59 | YYYY/MM/DD HH:MM:SS (PID)> - loading configtable attributes | |
|
60 | YYYY/MM/DD HH:MM:SS (PID)> - executing uisetup hooks | |
|
61 | YYYY/MM/DD HH:MM:SS (PID)> - running uisetup for foobar | |
|
58 | 62 | uisetup called [debug] |
|
59 | 63 | uisetup called |
|
60 | 64 | uisetup called [status] |
|
61 |
|
|
|
62 |
|
|
|
63 | debug.extensions: - executing extsetup hooks | |
|
64 |
|
|
|
65 |
|
|
|
66 |
|
|
|
67 |
|
|
|
68 |
|
|
|
69 |
|
|
|
70 |
|
|
|
71 |
|
|
|
72 | debug.extensions: extension loading complete | |
|
73 |
|
|
|
74 | debug.extensions: - processing 1 entries | |
|
75 |
|
|
|
76 |
|
|
|
77 | debug.extensions: - executing uisetup hooks | |
|
78 |
|
|
|
79 | debug.extensions: - executing extsetup hooks | |
|
80 |
|
|
|
81 |
|
|
|
82 |
|
|
|
83 |
|
|
|
84 |
|
|
|
85 | debug.extensions: extension loading complete | |
|
86 |
|
|
|
87 |
|
|
|
65 | YYYY/MM/DD HH:MM:SS (PID)> > uisetup for foobar took * (glob) | |
|
66 | YYYY/MM/DD HH:MM:SS (PID)> > all uisetup took * (glob) | |
|
67 | YYYY/MM/DD HH:MM:SS (PID)> - executing extsetup hooks | |
|
68 | YYYY/MM/DD HH:MM:SS (PID)> - running extsetup for foobar | |
|
69 | YYYY/MM/DD HH:MM:SS (PID)> > extsetup for foobar took * (glob) | |
|
70 | YYYY/MM/DD HH:MM:SS (PID)> > all extsetup took * (glob) | |
|
71 | YYYY/MM/DD HH:MM:SS (PID)> - executing remaining aftercallbacks | |
|
72 | YYYY/MM/DD HH:MM:SS (PID)> > remaining aftercallbacks completed in * (glob) | |
|
73 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension registration objects | |
|
74 | YYYY/MM/DD HH:MM:SS (PID)> > extension registration object loading took * (glob) | |
|
75 | YYYY/MM/DD HH:MM:SS (PID)> > extension foobar take a total of * to load (glob) | |
|
76 | YYYY/MM/DD HH:MM:SS (PID)> extension loading complete | |
|
77 | YYYY/MM/DD HH:MM:SS (PID)> loading additional extensions | |
|
78 | YYYY/MM/DD HH:MM:SS (PID)> - processing 1 entries | |
|
79 | YYYY/MM/DD HH:MM:SS (PID)> > loaded 0 extensions, total time * (glob) | |
|
80 | YYYY/MM/DD HH:MM:SS (PID)> - loading configtable attributes | |
|
81 | YYYY/MM/DD HH:MM:SS (PID)> - executing uisetup hooks | |
|
82 | YYYY/MM/DD HH:MM:SS (PID)> > all uisetup took * (glob) | |
|
83 | YYYY/MM/DD HH:MM:SS (PID)> - executing extsetup hooks | |
|
84 | YYYY/MM/DD HH:MM:SS (PID)> > all extsetup took * (glob) | |
|
85 | YYYY/MM/DD HH:MM:SS (PID)> - executing remaining aftercallbacks | |
|
86 | YYYY/MM/DD HH:MM:SS (PID)> > remaining aftercallbacks completed in * (glob) | |
|
87 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension registration objects | |
|
88 | YYYY/MM/DD HH:MM:SS (PID)> > extension registration object loading took * (glob) | |
|
89 | YYYY/MM/DD HH:MM:SS (PID)> extension loading complete | |
|
90 | YYYY/MM/DD HH:MM:SS (PID)> - executing reposetup hooks | |
|
91 | YYYY/MM/DD HH:MM:SS (PID)> - running reposetup for foobar | |
|
88 | 92 | reposetup called for a |
|
89 | 93 | ui == repo.ui |
|
90 |
|
|
|
91 |
|
|
|
94 | YYYY/MM/DD HH:MM:SS (PID)> > reposetup for foobar took * (glob) | |
|
95 | YYYY/MM/DD HH:MM:SS (PID)> > all reposetup took * (glob) | |
|
92 | 96 | Foo |
|
93 | 97 | |
|
94 | 98 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now