diff mercurial/hbisect.py @ 43665:f37da59a36d9

bisect: replace try:/finally: by a "restore_state" context manager This should help pytype to not consider "bgood" variable as NameError. See https://phab.mercurial-scm.org/D7384 for context. Differential Revision: https://phab.mercurial-scm.org/D7430
author Denis Laxalde <denis.laxalde@logilab.fr>
date Thu, 14 Nov 2019 10:47:04 +0100
parents 687b865b95ad
children 9d2b2df2c2ba
line wrap: on
line diff
--- a/mercurial/hbisect.py	Wed Oct 30 19:19:57 2019 -0400
+++ b/mercurial/hbisect.py	Thu Nov 14 10:47:04 2019 +0100
@@ -11,6 +11,7 @@
 from __future__ import absolute_import
 
 import collections
+import contextlib
 
 from .i18n import _
 from .node import (
@@ -180,6 +181,15 @@
         raise error.Abort(_(b'cannot bisect (no known bad revisions)'))
 
 
+@contextlib.contextmanager
+def restore_state(repo, state, node):
+    try:
+        yield
+    finally:
+        state[b'current'] = [node]
+        save_state(repo, state)
+
+
 def get(repo, status):
     """
     Return a list of revision(s) that match the given status: