2009-11-16 Eric Seidel <eric@webkit.org>
authoreric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Nov 2009 10:50:50 +0000 (10:50 +0000)
committereric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Nov 2009 10:50:50 +0000 (10:50 +0000)
        Reviewed by Adam Barth.

        land-patches needs to be re-factored into smaller chunks
        https://bugs.webkit.org/show_bug.cgi?id=31532

        The next patch will move these methods into WebKitLandingScripts.

        * Scripts/bugzilla-tool:
         - Split out _land_patch and _close_bug_if_no_active_patches.

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

WebKitTools/ChangeLog
WebKitTools/Scripts/bugzilla-tool

index 3cfcd673a1a41c469abcbc66af969b333173c8da..f3a666105c300db6b50aa19c3bd206922ef4ddfb 100644 (file)
@@ -1,3 +1,15 @@
+2009-11-16  Eric Seidel  <eric@webkit.org>
+
+        Reviewed by Adam Barth.
+
+        land-patches needs to be re-factored into smaller chunks
+        https://bugs.webkit.org/show_bug.cgi?id=31532
+
+        The next patch will move these methods into WebKitLandingScripts.
+
+        * Scripts/bugzilla-tool:
+         - Split out _land_patch and _close_bug_if_no_active_patches.
+
 2009-11-16  Adam Barth  <abarth@webkit.org>
 
         Reviewed by Eric Seidel.
index d0d3a9b5e71057fdf6ca05209f67640e311a2b8e..1dd364088838eb28ae2eca26da19b01be3e4ad4b 100755 (executable)
@@ -382,21 +382,30 @@ class LandPatchesFromBugs(Command):
         exit(2) # Exit 2 insted of 1 to indicate to the commit-queue to indicate we handled the error, and that the queue should keep looping.
 
     @classmethod
-    def land_patches(cls, bug_id, patches, options, tool):
+    def _close_bug_if_no_active_patches(cls, patch, option, tool):
+        # This should check to make sure there are no r? or r+ patches on the bug before closing.
+        # https://bugs.webkit.org/show_bug.cgi?id=28230
+        tool.bugs.close_bug_as_fixed(bug_id, "All reviewed patches have been landed.  Closing bug.")
+
+    @classmethod
+    def _land_patch(cls, patch, options, tool):
+        tool.scm().update_webkit() # Update before every patch in case the tree has changed
+        log("Applying %s from bug %s." % (patch['id'], patch['bug_id']))
+        tool.scm().apply_patch(patch, force=options.commit_queue)
+
+        # Make sure the tree is still green after updating, before building this patch.
+        # The first patch ends up checking tree status twice, but that's OK.
+        WebKitLandingScripts.ensure_builders_are_green(tool.buildbot, options)
+        comment_text = WebKitLandingScripts.build_and_commit(tool.scm(), options)
+        tool.bugs.clear_attachment_flags(patch['id'], comment_text)
+
+    @classmethod
+    def land_patches(cls, patches, options, tool):
         try:
-            comment_text = ""
             for patch in patches:
-                tool.scm().update_webkit() # Update before every patch in case the tree has changed
-                log("Applying %s from bug %s." % (patch['id'], bug_id))
-                tool.scm().apply_patch(patch, force=options.commit_queue)
-                # Make sure the tree is still green after updating, before building this patch.
-                # The first patch ends up checking tree status twice, but that's OK.
-                WebKitLandingScripts.ensure_builders_are_green(tool.buildbot, options)
-                comment_text = WebKitLandingScripts.build_and_commit(tool.scm(), options)
-                tool.bugs.clear_attachment_flags(patch['id'], comment_text)
-
-            if options.close_bug:
-                tool.bugs.close_bug_as_fixed(bug_id, "All reviewed patches have been landed.  Closing bug.")
+                cls._land_patch(patch, options, tool)
+            if options.close_bug and patches:
+                cls._close_bug_if_no_active_patches(patches[0]['bug_id'])
         except CheckoutNeedsUpdate, e:
             log("Commit failed because the checkout is out of date.  Please update and try again.")
             log("You can pass --no-build to skip building/testing after update if you believe the new commits did not affect the results.")
@@ -431,15 +440,13 @@ class LandPatchesFromBugs(Command):
         if not len(args):
             error("bug-id(s) required")
 
-        # Check the tree status here so we can fail early
+        # Check the tree status first so we can fail early.
         WebKitLandingScripts.ensure_builders_are_green(tool.buildbot, options)
-
         bugs_to_patches = self._fetch_list_of_patches_to_land(options, args, tool)
 
         WebKitLandingScripts.prepare_clean_working_directory(tool.scm(), options)
-
         for bug_id in bugs_to_patches.keys():
-            self.land_patches(bug_id, bugs_to_patches[bug_id], options, tool)
+            self.land_patches(bugs_to_patches[bug_id], options, tool)
 
 
 class CommitMessageForCurrentDiff(Command):