| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 the V8 project authors. All rights reserved. | 2 # Copyright 2014 the V8 project authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # This script retrieves the history of all V8 branches and trunk revisions and | 6 # This script retrieves the history of all V8 branches and trunk revisions and |
| 7 # their corresponding Chromium revisions. | 7 # their corresponding Chromium revisions. |
| 8 | 8 |
| 9 # Requires a chromium checkout with branch heads: | 9 # Requires a chromium checkout with branch heads: |
| 10 # gclient sync --with_branch_heads | 10 # gclient sync --with_branch_heads |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 self.PrepareBranch() | 129 self.PrepareBranch() |
| 130 | 130 |
| 131 | 131 |
| 132 class RetrieveV8Releases(Step): | 132 class RetrieveV8Releases(Step): |
| 133 MESSAGE = "Retrieve all V8 releases." | 133 MESSAGE = "Retrieve all V8 releases." |
| 134 | 134 |
| 135 def ExceedsMax(self, releases): | 135 def ExceedsMax(self, releases): |
| 136 return (self._options.max_releases > 0 | 136 return (self._options.max_releases > 0 |
| 137 and len(releases) > self._options.max_releases) | 137 and len(releases) > self._options.max_releases) |
| 138 | 138 |
| 139 def GetBleedingEdgeFromPush(self, title): | |
| 140 return MatchSafe(PUSH_MSG_SVN_RE.match(title)) | |
| 141 | |
| 142 def GetBleedingEdgeGitFromPush(self, title): | 139 def GetBleedingEdgeGitFromPush(self, title): |
| 143 return MatchSafe(PUSH_MSG_GIT_RE.match(title)) | 140 return MatchSafe(PUSH_MSG_GIT_RE.match(title)) |
| 144 | 141 |
| 145 def GetMergedPatches(self, body): | 142 def GetMergedPatches(self, body): |
| 146 patches = MatchSafe(MERGE_MESSAGE_RE.search(body)) | 143 patches = MatchSafe(MERGE_MESSAGE_RE.search(body)) |
| 147 if not patches: | 144 if not patches: |
| 148 patches = MatchSafe(ROLLBACK_MESSAGE_RE.search(body)) | 145 patches = MatchSafe(ROLLBACK_MESSAGE_RE.search(body)) |
| 149 if patches: | 146 if patches: |
| 150 # Indicate reverted patches with a "-". | 147 # Indicate reverted patches with a "-". |
| 151 patches = "-%s" % patches | 148 patches = "-%s" % patches |
| 152 return patches | 149 return patches |
| 153 | 150 |
| 154 def GetMergedPatchesGit(self, body): | 151 def GetMergedPatchesGit(self, body): |
| 155 patches = [] | 152 patches = [] |
| 156 for line in body.splitlines(): | 153 for line in body.splitlines(): |
| 157 patch = MatchSafe(MERGE_MESSAGE_GIT_RE.match(line)) | 154 patch = MatchSafe(MERGE_MESSAGE_GIT_RE.match(line)) |
| 158 if patch: | 155 if patch: |
| 159 patches.append(patch) | 156 patches.append(patch) |
| 160 patch = MatchSafe(ROLLBACK_MESSAGE_GIT_RE.match(line)) | 157 patch = MatchSafe(ROLLBACK_MESSAGE_GIT_RE.match(line)) |
| 161 if patch: | 158 if patch: |
| 162 patches.append("-%s" % patch) | 159 patches.append("-%s" % patch) |
| 163 return ", ".join(patches) | 160 return ", ".join(patches) |
| 164 | 161 |
| 165 | 162 |
| 166 def GetReleaseDict( | 163 def GetReleaseDict( |
| 167 self, git_hash, bleeding_edge_rev, bleeding_edge_git, branch, version, | 164 self, git_hash, bleeding_edge_rev, bleeding_edge_git, branch, version, |
| 168 patches, cl_body): | 165 patches, cl_body): |
| 169 revision = self.vc.GitSvn(git_hash) | 166 revision = self.GetCommitPositionNumber(git_hash) |
| 170 return { | 167 return { |
| 171 # The SVN revision on the branch. | 168 # The cr commit position number on the branch. |
| 172 "revision": revision, | 169 "revision": revision, |
| 173 # The git revision on the branch. | 170 # The git revision on the branch. |
| 174 "revision_git": git_hash, | 171 "revision_git": git_hash, |
| 175 # The SVN revision on bleeding edge (only for newer trunk pushes). | 172 # The cr commit position number on master. |
| 176 "bleeding_edge": bleeding_edge_rev, | 173 "bleeding_edge": bleeding_edge_rev, |
| 177 # The same for git. | 174 # The same for git. |
| 178 "bleeding_edge_git": bleeding_edge_git, | 175 "bleeding_edge_git": bleeding_edge_git, |
| 179 # The branch name. | 176 # The branch name. |
| 180 "branch": branch, | 177 "branch": branch, |
| 181 # The version for displaying in the form 3.26.3 or 3.26.3.12. | 178 # The version for displaying in the form 3.26.3 or 3.26.3.12. |
| 182 "version": version, | 179 "version": version, |
| 183 # The date of the commit. | 180 # The date of the commit. |
| 184 "date": self.GitLog(n=1, format="%ci", git_hash=git_hash), | 181 "date": self.GitLog(n=1, format="%ci", git_hash=git_hash), |
| 185 # Merged patches if available in the form 'r1234, r2345'. | 182 # Merged patches if available in the form 'r1234, r2345'. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 204 | 201 |
| 205 patches = "" | 202 patches = "" |
| 206 if self["patch"] != "0": | 203 if self["patch"] != "0": |
| 207 version += ".%s" % self["patch"] | 204 version += ".%s" % self["patch"] |
| 208 if CHERRY_PICK_TITLE_GIT_RE.match(body.splitlines()[0]): | 205 if CHERRY_PICK_TITLE_GIT_RE.match(body.splitlines()[0]): |
| 209 patches = self.GetMergedPatchesGit(body) | 206 patches = self.GetMergedPatchesGit(body) |
| 210 else: | 207 else: |
| 211 patches = self.GetMergedPatches(body) | 208 patches = self.GetMergedPatches(body) |
| 212 | 209 |
| 213 title = self.GitLog(n=1, format="%s", git_hash=git_hash) | 210 title = self.GitLog(n=1, format="%s", git_hash=git_hash) |
| 214 bleeding_edge_revision = self.GetBleedingEdgeFromPush(title) | 211 bleeding_edge_git = self.GetBleedingEdgeGitFromPush(title) |
| 215 bleeding_edge_git = "" | 212 bleeding_edge_position = "" |
| 216 if bleeding_edge_revision: | 213 if bleeding_edge_git: |
| 217 bleeding_edge_git = self.vc.SvnGit(bleeding_edge_revision, | 214 bleeding_edge_position = self.GetCommitPositionNumber(bleeding_edge_git) |
| 218 self.vc.RemoteMasterBranch()) | 215 # TODO(machenbach): Add the commit position number. |
| 219 else: | |
| 220 bleeding_edge_git = self.GetBleedingEdgeGitFromPush(title) | |
| 221 return self.GetReleaseDict( | 216 return self.GetReleaseDict( |
| 222 git_hash, bleeding_edge_revision, bleeding_edge_git, branch, version, | 217 git_hash, bleeding_edge_position, bleeding_edge_git, branch, version, |
| 223 patches, body), self["patch"] | 218 patches, body), self["patch"] |
| 224 | 219 |
| 225 def GetReleasesFromMaster(self): | 220 def GetReleasesFromMaster(self): |
| 226 tag_text = self.SVN("log https://v8.googlecode.com/svn/tags -v --limit 20") | 221 # TODO(machenbach): Implement this in git as soon as we tag again on |
| 227 releases = [] | 222 # master. |
| 228 for (tag, revision) in re.findall(BLEEDING_EDGE_TAGS_RE, tag_text): | 223 # tag_text = self.SVN("log https://v8.googlecode.com/svn/tags -v |
| 229 git_hash = self.vc.SvnGit(revision) | 224 # --limit 20") |
| 225 # releases = [] |
| 226 # for (tag, revision) in re.findall(BLEEDING_EDGE_TAGS_RE, tag_text): |
| 227 # git_hash = self.vc.SvnGit(revision) |
| 230 | 228 |
| 231 # Add bleeding edge release. It does not contain patches or a code | 229 # Add bleeding edge release. It does not contain patches or a code |
| 232 # review link, as tags are not uploaded. | 230 # review link, as tags are not uploaded. |
| 233 releases.append(self.GetReleaseDict( | 231 # releases.append(self.GetReleaseDict( |
| 234 git_hash, revision, git_hash, self.vc.MasterBranch(), tag, "", "")) | 232 # git_hash, revision, git_hash, self.vc.MasterBranch(), tag, "", "")) |
| 235 return releases | 233 return [] |
| 236 | 234 |
| 237 def GetReleasesFromBranch(self, branch): | 235 def GetReleasesFromBranch(self, branch): |
| 238 self.GitReset(self.vc.RemoteBranch(branch)) | 236 self.GitReset(self.vc.RemoteBranch(branch)) |
| 239 if branch == self.vc.MasterBranch(): | 237 if branch == self.vc.MasterBranch(): |
| 240 return self.GetReleasesFromMaster() | 238 return self.GetReleasesFromMaster() |
| 241 | 239 |
| 242 releases = [] | 240 releases = [] |
| 243 try: | 241 try: |
| 244 for git_hash in self.GitLog(format="%H").splitlines(): | 242 for git_hash in self.GitLog(format="%H").splitlines(): |
| 245 if VERSION_FILE not in self.GitChangedFiles(git_hash): | 243 if VERSION_FILE not in self.GitChangedFiles(git_hash): |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 UpdateChromiumCheckout, | 497 UpdateChromiumCheckout, |
| 500 RetrieveChromiumV8Releases, | 498 RetrieveChromiumV8Releases, |
| 501 RietrieveChromiumBranches, | 499 RietrieveChromiumBranches, |
| 502 CleanUp, | 500 CleanUp, |
| 503 WriteOutput, | 501 WriteOutput, |
| 504 ] | 502 ] |
| 505 | 503 |
| 506 | 504 |
| 507 if __name__ == "__main__": # pragma: no cover | 505 if __name__ == "__main__": # pragma: no cover |
| 508 sys.exit(Releases().Run()) | 506 sys.exit(Releases().Run()) |
| OLD | NEW |