bisect-builds: improve heuristic for choosing the next build after a broken build
authorddkilzer@apple.com <ddkilzer@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 24 Jun 2013 21:33:17 +0000 (21:33 +0000)
committerddkilzer@apple.com <ddkilzer@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 24 Jun 2013 21:33:17 +0000 (21:33 +0000)
<http://webkit.org/b/117918>

Reviewed by Simon Fraser.

* Scripts/bisect-builds: When a build is broken, use a heuristic
that "bisects" the left side or the right side of the remaining
revisions to pick a revision that's sufficiently different from
the revision of the broken build.  This heuristic assumes there
is a sequential range of broken builds whenever one broken build
is found.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@151930 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/bisect-builds

index c87d6d6ec3afd987a841f1fea6d41e0ea66005d3..e9c645ebc1cc3a90997b638d8f08e0fb13157049 100644 (file)
@@ -1,3 +1,17 @@
+2013-06-24  David Kilzer  <ddkilzer@apple.com>
+
+        bisect-builds: improve heuristic for choosing the next build after a broken build
+        <http://webkit.org/b/117918>
+
+        Reviewed by Simon Fraser.
+
+        * Scripts/bisect-builds: When a build is broken, use a heuristic
+        that "bisects" the left side or the right side of the remaining
+        revisions to pick a revision that's sufficiently different from
+        the revision of the broken build.  This heuristic assumes there
+        is a sequential range of broken builds whenever one broken build
+        is found.
+
 2013-06-24  Chris Rogers  <crogers@google.com>
 
         WaveTable name has changed to PeriodicWave
index b970db399949169e61111aec567b63c84162b989..301d9fd858c341f11eb6a683e27d449af2d66b79 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -w
 
-# Copyright (C) 2007, 2008, 2011 Apple Inc.  All rights reserved.
+# Copyright (C) 2007, 2008, 2009, 2011, 2012, 2013 Apple Inc.  All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions
@@ -187,7 +187,13 @@ while (abs($endIndex - $startIndex) > 1) {
             $brokenRevisions{$nightlies[$index]->{rev}} = $nightlies[$index]->{file};
             delete $nightlies[$index];
             $endIndex--;
-            $index = $startIndex + int(($endIndex - $startIndex) / 2);
+            if (scalar(keys %brokenRevisions) % 2 == 0) {
+                # Even tries to bisect to the left
+                $index = int(($startIndex + $index) / 2);
+            } else {
+                # Odd tries to bisect to the right
+                $index = int(($index + $endIndex) / 2);
+            }
         }
     } while ($didReproduceBug < 0);