D4344: tracing: new module to make tracing events in hg easier

durin42 (Augie Fackler) phabricator at mercurial-scm.org
Tue Aug 21 21:39:44 UTC 2018


durin42 created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D4344

AFFECTED FILES
  hgdemandimport/tracing.py

CHANGE DETAILS

diff --git a/hgdemandimport/tracing.py b/hgdemandimport/tracing.py
new file mode 100644
--- /dev/null
+++ b/hgdemandimport/tracing.py
@@ -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
+
+ at 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))



To: durin42, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list