##// END OF EJS Templates
tracing: new module to make tracing events in hg easier...
tracing: new module to make tracing events in hg easier This lives in hgdemandimport because I want to instrument a bunch of low-level stuff including the bare `hg` script and demandimport, so it can't live at a higher layer. Differential Revision: https://phab.mercurial-scm.org/D4344

File last commit:

r39290:28444004 default
r39290:28444004 default
Show More
tracing.py
34 lines | 984 B | text/x-python | PythonLexer
# Support code for event tracing in Mercurial. Lives in demandimport
# so it can also be used in demandimport.
#
# Copyright 2018 Google LLC.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
import contextlib
import os
_pipe = None
_checked = False
@contextlib.contextmanager
def log(whencefmt, *whenceargs):
global _pipe, _session, _checked
if _pipe is None:
if _checked:
yield
return
_checked = True
if 'HGCATAPULTSERVERPIPE' not in os.environ:
yield
return
_pipe = open(os.environ['HGCATAPULTSERVERPIPE'], 'w', 1)
_session = os.environ.get('HGCATAPULTSESSION', 'none')
whence = whencefmt % whenceargs
try:
_pipe.write('START %s %s\n' % (_session, whence))
yield
finally:
_pipe.write('END %s %s\n' % (_session, whence))