Mercurial > hg
changeset 39254:284440041141
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
author | Augie Fackler <augie@google.com> |
---|---|
date | Tue, 21 Aug 2018 15:24:20 -0400 |
parents | c496e8c14b9e |
children | 4019b4542e61 |
files | hgdemandimport/tracing.py |
diffstat | 1 files changed, 34 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hgdemandimport/tracing.py Tue Aug 21 15:24:20 2018 -0400 @@ -0,0 +1,34 @@ +# 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))