Changeset 55034 in webkit
- Timestamp:
- Feb 19, 2010 3:07:02 PM (14 years ago)
- Location:
- trunk/WebKitTools
- Files:
-
- 5 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKitTools/ChangeLog
r55025 r55034 1 2010-02-19 Eric Seidel <eric@webkit.org> 2 3 Reviewed by Adam Barth. 4 5 Split out "prepare-rollout" from "rollout" and make --complete-rollout default 6 https://bugs.webkit.org/show_bug.cgi?id=33745 7 8 * Scripts/webkitpy/commands/download.py: 9 - Add a new AbstractRolloutPrepCommand to share code between PrepareRollout and Rollout 10 - Add PrepareRollout 11 * Scripts/webkitpy/commands/download_unittest.py: Test PrepareRollout, remove CompleteRollout tests. 12 * Scripts/webkitpy/steps/__init__.py: include ReopenBugAfterRollout step. 13 * Scripts/webkitpy/steps/completerollout.py: Removed. 14 * Scripts/webkitpy/steps/options.py: remove complete_rollout 15 * Scripts/webkitpy/steps/reopenbugafterrollout.py: Added. 16 1 17 2010-02-19 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> 2 18 -
trunk/WebKitTools/Scripts/webkitpy/commands/download.py
r53133 r55034 241 241 242 242 243 class Rollout(AbstractSequencedCommand): 243 class AbstractRolloutPrepCommand(AbstractSequencedCommand): 244 argument_names = "REVISION REASON" 245 246 def _parse_bug_id_from_revision_diff(self, revision): 247 original_diff = self.tool.scm().diff_for_revision(revision) 248 return parse_bug_id(original_diff) 249 250 def _bug_id_for_revision(self, revision): 251 raise NotImplementedError("subclasses must implement") 252 253 def _prepare_state(self, options, args, tool): 254 revision = args[0] 255 return { 256 "revision" : revision, 257 "bug_id" : self._bug_id_for_revision(revision), 258 "reason" : args[1], 259 } 260 261 262 class PrepareRollout(AbstractRolloutPrepCommand): 263 name = "prepare-rollout" 264 help_text = "Revert the given revision in the working copy and prepare ChangeLogs with revert reason" 265 long_help = """Updates the working copy. 266 Applies the inverse diff for the provided revision. 267 Creates an appropriate rollout ChangeLog, including a trac link and bug link. 268 """ 269 steps = [ 270 steps.CleanWorkingDirectory, 271 steps.Update, 272 steps.RevertRevision, 273 steps.PrepareChangeLogForRevert, 274 ] 275 276 def _bug_id_for_revision(self, revision): 277 bug_id = self._parse_bug_id_from_revision_diff(revision) 278 if bug_id: 279 return bug_id 280 log("Failed to parse bug number from diff.") 281 282 283 class Rollout(AbstractRolloutPrepCommand): 244 284 name = "rollout" 245 285 show_in_main_help = True 246 286 help_text = "Revert the given revision in the working copy and optionally commit the revert and re-open the original bug" 247 argument_names = "REVISION REASON"248 287 long_help = """Updates the working copy. 249 288 Applies the inverse diff for the provided revision. … … 259 298 steps.EditChangeLog, 260 299 steps.ConfirmDiff, 261 steps.CompleteRollout, 262 ] 263 264 @staticmethod 265 def _parse_bug_id_from_revision_diff(tool, revision): 266 original_diff = tool.scm().diff_for_revision(revision) 267 return parse_bug_id(original_diff) 268 269 def execute(self, options, args, tool): 270 revision = args[0] 271 reason = args[1] 272 bug_id = self._parse_bug_id_from_revision_diff(tool, revision) 273 if options.complete_rollout: 274 if bug_id: 275 log("Will re-open bug %s after rollout." % bug_id) 276 else: 277 log("Failed to parse bug number from diff. No bugs will be updated/reopened after the rollout.") 278 279 state = { 280 "revision" : revision, 281 "bug_id" : bug_id, 282 "reason" : reason, 283 } 284 self._sequence.run_and_handle_errors(tool, options, state) 300 steps.Build, 301 steps.Commit, 302 steps.ReopenBugAfterRollout, 303 ] 304 305 def _bug_id_for_revision(self, revision): 306 bug_id = self._parse_bug_id_from_revision_diff(revision) 307 if bug_id: 308 log("Will re-open bug %s after rollout." % bug_id) 309 return bug_id 310 log("Failed to parse bug number from diff. No bugs will be updated/reopened after the rollout.") -
trunk/WebKitTools/Scripts/webkitpy/commands/download_unittest.py
r53925 r55034 43 43 options.test = True 44 44 options.close_bug = True 45 options.complete_rollout = False46 45 return options 47 46 … … 117 116 self.assert_execute_outputs(LandFromBug(), [42], options=self._default_options(), expected_stderr=expected_stderr) 118 117 118 def test_prepare_rollout(self): 119 expected_stderr="Updating working directory\nRunning prepare-ChangeLog\n" 120 self.assert_execute_outputs(PrepareRollout(), [852, "Reason"], options=self._default_options(), expected_stderr=expected_stderr) 121 119 122 def test_rollout(self): 120 expected_stderr = " Updating working directory\nRunning prepare-ChangeLog\n\nNOTE: Rollout support is experimental.\nPlease verify the rollout diff and use \"webkit-patch land 12345\" to commit the rollout.\n"123 expected_stderr = "Will re-open bug 12345 after rollout.\nUpdating working directory\nRunning prepare-ChangeLog\nBuilding WebKit\n" 121 124 self.assert_execute_outputs(Rollout(), [852, "Reason"], options=self._default_options(), expected_stderr=expected_stderr) 122 125 123 def test_complete_rollout(self):124 options = self._default_options()125 options.complete_rollout = True126 expected_stderr = "Will re-open bug 12345 after rollout.\nUpdating working directory\nRunning prepare-ChangeLog\nBuilding WebKit\n"127 self.assert_execute_outputs(Rollout(), [852, "Reason"], options=options, expected_stderr=expected_stderr) -
trunk/WebKitTools/Scripts/webkitpy/steps/__init__.py
r53120 r55034 38 38 from webkitpy.steps.closepatch import ClosePatch 39 39 from webkitpy.steps.commit import Commit 40 from webkitpy.steps.completerollout import CompleteRollout41 40 from webkitpy.steps.confirmdiff import ConfirmDiff 42 41 from webkitpy.steps.createbug import CreateBug … … 51 50 from webkitpy.steps.preparechangelog import PrepareChangeLog 52 51 from webkitpy.steps.promptforbugortitle import PromptForBugOrTitle 52 from webkitpy.steps.reopenbugafterrollout import ReopenBugAfterRollout 53 53 from webkitpy.steps.revertrevision import RevertRevision 54 54 from webkitpy.steps.runtests import RunTests -
trunk/WebKitTools/Scripts/webkitpy/steps/options.py
r52910 r55034 37 37 clean = make_option("--no-clean", action="store_false", dest="clean", default=True, help="Don't check if the working directory is clean before applying patches") 38 38 close_bug = make_option("--no-close", action="store_false", dest="close_bug", default=True, help="Leave bug open after landing.") 39 complete_rollout = make_option("--complete-rollout", action="store_true", dest="complete_rollout", help="Commit the revert and re-open the original bug.")40 39 component = make_option("--component", action="store", type="string", dest="component", help="Component for the new bug.") 41 40 confirm = make_option("--no-confirm", action="store_false", dest="confirm", default=True, help="Skip confirmation steps.") -
trunk/WebKitTools/Scripts/webkitpy/steps/reopenbugafterrollout.py
r55032 r55034 28 28 29 29 from webkitpy.comments import bug_comment_from_commit_text 30 from webkitpy.steps.build import Build 31 from webkitpy.steps.commit import Commit 32 from webkitpy.steps.metastep import MetaStep 33 from webkitpy.steps.options import Options 30 from webkitpy.steps.abstractstep import AbstractStep 34 31 from webkitpy.webkit_logging import log 35 32 36 33 37 class CompleteRollout(MetaStep): 38 substeps = [ 39 Build, 40 Commit, 41 ] 42 43 @classmethod 44 def options(cls): 45 collected_options = cls._collect_options_from_steps(cls.substeps) 46 collected_options.append(Options.complete_rollout) 47 return collected_options 48 34 class ReopenBugAfterRollout(AbstractStep): 49 35 def run(self, state): 50 bug_id = state["bug_id"]51 # FIXME: Fully automated rollout is not 100% idiot-proof yet, so for now just log with instructions on how to complete the rollout.52 # Once we trust rollout we will remove this option.53 if not self._options.complete_rollout:54 log("\nNOTE: Rollout support is experimental.\nPlease verify the rollout diff and use \"webkit-patch land %s\" to commit the rollout." % bug_id)55 return56 57 MetaStep.run(self, state)58 59 36 commit_comment = bug_comment_from_commit_text(self._tool.scm(), state["commit_text"]) 60 37 comment_text = "Reverted r%s for reason:\n\n%s\n\n%s" % (state["revision"], state["reason"], commit_comment) 61 38 39 bug_id = state["bug_id"] 62 40 if not bug_id: 63 41 log(comment_text)
Note: See TracChangeset
for help on using the changeset viewer.