[PATCH 5 of 8] bisect: move check_state into the bisect module

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sun Oct 9 04:57:39 EDT 2016


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1472005520 -7200
#      Wed Aug 24 04:25:20 2016 +0200
# Node ID 45469b6da789e8d07251c49f41cfef45fc3eba3b
# Parent  c0e6a5b2b049385418761b9892096e12afd06237
# EXP-Topic bisect
bisect: move check_state into the bisect module

Now that the function is simpler, we resume our quest to move the logic into the
bisect module. In the process, we add basic documentation.

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -835,14 +835,6 @@ def bisect(ui, repo, rev=None, extra=Non
 
     Returns 0 on success.
     """
-    def checkstate(state):
-        if state['good'] and state['bad']:
-            return True
-        if not state['good']:
-            raise error.Abort(_('cannot bisect (no known good revisions)'))
-        else:
-            raise error.Abort(_('cannot bisect (no known bad revisions)'))
-
     # backward compatibility
     if rev in "good bad reset init".split():
         ui.warn(_("(use of 'hg bisect <cmd>' is deprecated)\n"))
@@ -913,7 +905,7 @@ def bisect(ui, repo, rev=None, extra=Non
                 rev = None # clear for future iterations
                 state[transition].append(ctx.node())
                 ui.status(_('changeset %d:%s: %s\n') % (ctx, ctx, transition))
-                checkstate(state)
+                hbisect.checkstate(state)
                 # bisect
                 nodes, changesets, bgood = hbisect.bisect(repo.changelog, state)
                 # update to next check
@@ -928,7 +920,7 @@ def bisect(ui, repo, rev=None, extra=Non
         hbisect.printresult(ui, repo, state, displayer, nodes, bgood)
         return
 
-    checkstate(state)
+    hbisect.checkstate(state)
 
     # actually bisect
     nodes, changesets, good = hbisect.bisect(repo.changelog, state)
diff --git a/mercurial/hbisect.py b/mercurial/hbisect.py
--- a/mercurial/hbisect.py
+++ b/mercurial/hbisect.py
@@ -177,6 +177,17 @@ def resetstate(repo):
     if repo.vfs.exists("bisect.state"):
         repo.vfs.unlink("bisect.state")
 
+def checkstate(state):
+    """check we have both 'good' and 'bad' to define a range
+
+    Raise Abort exception otherwise."""
+    if state['good'] and state['bad']:
+        return True
+    if not state['good']:
+        raise error.Abort(_('cannot bisect (no known good revisions)'))
+    else:
+        raise error.Abort(_('cannot bisect (no known bad revisions)'))
+
 def get(repo, status):
     """
     Return a list of revision(s) that match the given status:


More information about the Mercurial-devel mailing list