Mercurial > hg
view hgdemandimport/tracing.py @ 50394:7a017cd07a1e
strip: explicitly compute the boundary of the backup bundle
We want to make change to the set of backed up revision in a future changeset,
we start with a change of the computation without any changes in the semantic
to clarify later changeset.
The could of costly assert are here to testify that the result is still
correct. They will be removed in the next changesets, but I wanted them in this
changeset to help in case someone bisect a regression to this changeset in the
future.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 09 Mar 2023 15:06:59 +0100 |
parents | 6000f5b25c9b |
children | f4733654f144 |
line wrap: on
line source
# 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. import contextlib import os _pipe = None _checked = False _session = 'none' def _isactive(): global _pipe, _session, _checked if _pipe is None: if _checked: return False _checked = True if 'HGCATAPULTSERVERPIPE' not in os.environ: return False _pipe = open(os.environ['HGCATAPULTSERVERPIPE'], 'w', 1) _session = os.environ.get('HGCATAPULTSESSION', 'none') return True @contextlib.contextmanager def log(whencefmt, *whenceargs): if not _isactive(): yield return whence = whencefmt % whenceargs try: # Both writes to the pipe are wrapped in try/except to ignore # errors, as we can see mysterious errors in here if the pager # is active. Presumably other conditions could trigger # problems too. try: _pipe.write('START %s %s\n' % (_session, whence)) except IOError: pass yield finally: try: _pipe.write('END %s %s\n' % (_session, whence)) except IOError: pass def counter(label, amount, *labelargs): if not _isactive(): return l = label % labelargs # See above in log() for why this is in a try/except. try: _pipe.write('COUNTER %s %d %s\n' % (_session, amount, l)) except IOError: pass