Chromium Code Reviews| Index: tools/push-to-trunk/auto_roll.py |
| diff --git a/tools/push-to-trunk/auto_roll.py b/tools/push-to-trunk/auto_roll.py |
| index ebe2397525d99ee05f1a90645ff216d0598fdfd6..c4132d1cf6beb726f4d2ca587de12777e59152b7 100755 |
| --- a/tools/push-to-trunk/auto_roll.py |
| +++ b/tools/push-to-trunk/auto_roll.py |
| @@ -44,6 +44,8 @@ CONFIG = { |
| SETTINGS_LOCATION: "~/.auto-roll", |
| } |
| +PUSH_MESSAGE_RE = re.compile(r".* \(based on bleeding_edge revision r(\d+)\)$") |
| + |
| class Preparation(Step): |
| MESSAGE = "Preparation." |
| @@ -77,42 +79,40 @@ class CheckTreeStatus(Step): |
| % self["tree_message"]) |
| -class FetchLatestRevision(Step): |
| - MESSAGE = "Fetching latest V8 revision." |
| +class FetchLKGR(Step): |
| + MESSAGE = "Fetching V8 LKGR." |
| def RunStep(self): |
| - match = re.match(r"^r(\d+) ", self.GitSVNLog()) |
| - if not match: # pragma: no cover |
| - self.Die("Could not extract current svn revision from log.") |
| - self["latest"] = match.group(1) |
| + lkgr_url = "https://v8-status.appspot.com/lkgr" |
| + # Retry several times since app engine might have issues. |
| + self["lkgr"] = self.ReadURL(lkgr_url, wait_plan=[5, 20, 300, 300]) |
| class CheckLastPush(Step): |
| MESSAGE = "Checking last V8 push to trunk." |
| def RunStep(self): |
| - last_push_hash = self.FindLastTrunkPush() |
| - last_push = int(self.GitSVNFindSVNRev(last_push_hash)) |
| + last_push = self.FindLastTrunkPush() |
| + |
| + # Retrieve the bleeding edge revision of the last push from the text in |
| + # the push commit message. |
| + last_push_title = self.GitLog(n=1, format="%s", git_hash=last_push) |
| + last_push_be = PUSH_MESSAGE_RE.match(last_push_title).group(1) |
| + |
| + if not last_push_be: # pragma: no cover |
| + self.Die("Could not retrieve bleeding edge revision for trunk push %s" |
| + % last_push) |
| # TODO(machenbach): This metric counts all revisions. It could be |
| # improved by counting only the revisions on bleeding_edge. |
| - if int(self["latest"]) - last_push < 10: # pragma: no cover |
| + if int(self["lkgr"]) - int(last_push_be) < 10: # pragma: no cover |
| # This makes sure the script doesn't push twice in a row when the cron |
| # job retries several times. |
| - self.Die("Last push too recently: %d" % last_push) |
| - |
| - |
| -class FetchLKGR(Step): |
| - MESSAGE = "Fetching V8 LKGR." |
| - |
| - def RunStep(self): |
| - lkgr_url = "https://v8-status.appspot.com/lkgr" |
| - # Retry several times since app engine might have issues. |
| - self["lkgr"] = self.ReadURL(lkgr_url, wait_plan=[5, 20, 300, 300]) |
| + self.Die("Last push too recently: %s" % last_push_be) |
| class PushToTrunk(Step): |
| - MESSAGE = "Pushing to trunk if possible." |
| + MESSAGE = "Pushing to trunk if specified." |
| def PushTreeStatus(self, message): |
| if not self._options.status_password: |
| @@ -129,26 +129,21 @@ class PushToTrunk(Step): |
| wait_plan=[5, 20]) |
| def RunStep(self): |
| - latest = int(self["latest"]) |
| - lkgr = int(self["lkgr"]) |
| - if latest == lkgr: |
| - print "ToT (r%d) is clean. Pushing to trunk." % latest |
| - self.PushTreeStatus("Tree is closed (preparing to push)") |
| - |
| - # TODO(machenbach): Update the script before calling it. |
| - try: |
| - if self._options.push: |
| - P = push_to_trunk.PushToTrunk |
| - self._side_effect_handler.Call( |
| - P(push_to_trunk.CONFIG, self._side_effect_handler).Run, |
| - ["-a", self._options.author, |
| - "-r", self._options.reviewer, |
| - "-f"]) |
| - finally: |
| - self.PushTreeStatus(self["tree_message"]) |
| - else: |
| - print("ToT (r%d) is ahead of the LKGR (r%d). Skipping push to trunk." |
| - % (latest, lkgr)) |
| + print "Pushing lkgr %s to trunk." % self["lkgr"] |
| + self.PushTreeStatus("Tree is closed (preparing to push)") |
| + |
| + # TODO(machenbach): Update the script before calling it. |
| + try: |
| + if self._options.push: |
| + P = push_to_trunk.PushToTrunk |
| + self._side_effect_handler.Call( |
| + P(push_to_trunk.CONFIG, self._side_effect_handler).Run, |
| + ["-a", self._options.author, |
| + "-r", self._options.reviewer, |
| + "-R", self["lkgr"], |
|
Jakob Kummerow
2014/03/21 14:32:38
nit: please use long option names here.
|
| + "-f"]) |
| + finally: |
| + self.PushTreeStatus(self["tree_message"]) |
| class AutoRoll(ScriptsBase): |
| @@ -173,9 +168,8 @@ class AutoRoll(ScriptsBase): |
| Preparation, |
| CheckAutoRollSettings, |
| CheckTreeStatus, |
| - FetchLatestRevision, |
| - CheckLastPush, |
| FetchLKGR, |
| + CheckLastPush, |
| PushToTrunk, |
| ] |