changeset 14895:a35d6f822e3e

hbisect: do not assume that min(good) is an ancestor of min(bad) The included test used to report "inconsistent state", which is incorrect. While this situation cannot occur when the user sticks to the suggested bisect sequence. However, adding more consistent good/bad information to the bisect state should be tolerated as well.
author Alexander Krauss <krauss@in.tum.de>
date Sun, 17 Jul 2011 00:36:43 +0200
parents 3db92e3948d5
children 1a841d2b4bb1
files mercurial/hbisect.py tests/test-bisect2.t
diffstat 2 files changed, 22 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/hbisect.py	Sun Jul 17 00:35:31 2011 +0200
+++ b/mercurial/hbisect.py	Sun Jul 17 00:36:43 2011 +0200
@@ -35,8 +35,9 @@
         # build visit array
         ancestors = [None] * (len(changelog) + 1) # an extra for [-1]
 
-        # set nodes descended from goodrev
-        ancestors[goodrev] = []
+        # set nodes descended from goodrevs
+        for rev in goodrevs:
+            ancestors[rev] = []
         for rev in xrange(goodrev + 1, len(changelog)):
             for prev in clparents(rev):
                 if ancestors[prev] == []:
--- a/tests/test-bisect2.t	Sun Jul 17 00:35:31 2011 +0200
+++ b/tests/test-bisect2.t	Sun Jul 17 00:36:43 2011 +0200
@@ -431,3 +431,22 @@
   date:        Thu Jan 01 00:00:09 1970 +0000
   summary:     9
   
+
+user adds irrelevant but consistent information (here: -g 2) to bisect state
+
+  $ hg bisect -r
+  $ hg bisect -b 13
+  $ hg bisect -g 8
+  Testing changeset 11:82ca6f06eccd (3 changesets remaining, ~1 tests)
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg bisect -g 2
+  Testing changeset 11:82ca6f06eccd (3 changesets remaining, ~1 tests)
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg bisect -b
+  The first bad revision is:
+  changeset:   11:82ca6f06eccd
+  parent:      8:dab8161ac8fc
+  user:        test
+  date:        Thu Jan 01 00:00:11 1970 +0000
+  summary:     11
+