diff -r 4483696dacee -r 086c1ef0f666 mercurial/profiling.py --- a/mercurial/profiling.py Thu Jun 08 01:38:48 2017 +0100 +++ b/mercurial/profiling.py Fri Jun 09 11:39:53 2017 +0100 @@ -152,8 +152,24 @@ self._output = None self._fp = None self._profiler = None + self._entered = False + self._started = False def __enter__(self): + self._entered = True + self.start() + + def start(self): + """Start profiling. + + The profiling will stop at the context exit. + + If the profiler was already started, this has no effect.""" + if not self._entered: + raise error.ProgrammingError() + if self._started: + return + self._started = True profiler = encoding.environ.get('HGPROF') proffn = None if profiler is None: