| 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 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 patches = MatchSafe(MERGE_MESSAGE_RE.search(body)) | 134 patches = MatchSafe(MERGE_MESSAGE_RE.search(body)) |
| 135 if not patches: | 135 if not patches: |
| 136 patches = MatchSafe(ROLLBACK_MESSAGE_RE.search(body)) | 136 patches = MatchSafe(ROLLBACK_MESSAGE_RE.search(body)) |
| 137 if patches: | 137 if patches: |
| 138 # Indicate reverted patches with a "-". | 138 # Indicate reverted patches with a "-". |
| 139 patches = "-%s" % patches | 139 patches = "-%s" % patches |
| 140 return patches | 140 return patches |
| 141 | 141 |
| 142 def GetReleaseDict( | 142 def GetReleaseDict( |
| 143 self, git_hash, bleeding_edge_rev, branch, version, patches, cl_body): | 143 self, git_hash, bleeding_edge_rev, branch, version, patches, cl_body): |
| 144 revision = self.GitSVNFindSVNRev(git_hash) | 144 revision = self.vc.GitSvn(git_hash) |
| 145 return { | 145 return { |
| 146 # The SVN revision on the branch. | 146 # The SVN revision on the branch. |
| 147 "revision": revision, | 147 "revision": revision, |
| 148 # The SVN revision on bleeding edge (only for newer trunk pushes). | 148 # The SVN revision on bleeding edge (only for newer trunk pushes). |
| 149 "bleeding_edge": bleeding_edge_rev, | 149 "bleeding_edge": bleeding_edge_rev, |
| 150 # The branch name. | 150 # The branch name. |
| 151 "branch": branch, | 151 "branch": branch, |
| 152 # The version for displaying in the form 3.26.3 or 3.26.3.12. | 152 # The version for displaying in the form 3.26.3 or 3.26.3.12. |
| 153 "version": version, | 153 "version": version, |
| 154 # The date of the commit. | 154 # The date of the commit. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 180 | 180 |
| 181 title = self.GitLog(n=1, format="%s", git_hash=git_hash) | 181 title = self.GitLog(n=1, format="%s", git_hash=git_hash) |
| 182 return self.GetReleaseDict( | 182 return self.GetReleaseDict( |
| 183 git_hash, self.GetBleedingEdgeFromPush(title), branch, version, | 183 git_hash, self.GetBleedingEdgeFromPush(title), branch, version, |
| 184 patches, body), self["patch"] | 184 patches, body), self["patch"] |
| 185 | 185 |
| 186 def GetReleasesFromBleedingEdge(self): | 186 def GetReleasesFromBleedingEdge(self): |
| 187 tag_text = self.SVN("log https://v8.googlecode.com/svn/tags -v --limit 20") | 187 tag_text = self.SVN("log https://v8.googlecode.com/svn/tags -v --limit 20") |
| 188 releases = [] | 188 releases = [] |
| 189 for (tag, revision) in re.findall(BLEEDING_EDGE_TAGS_RE, tag_text): | 189 for (tag, revision) in re.findall(BLEEDING_EDGE_TAGS_RE, tag_text): |
| 190 git_hash = self.GitSVNFindGitHash(revision) | 190 git_hash = self.vc.SvnGit(revision) |
| 191 | 191 |
| 192 # Add bleeding edge release. It does not contain patches or a code | 192 # Add bleeding edge release. It does not contain patches or a code |
| 193 # review link, as tags are not uploaded. | 193 # review link, as tags are not uploaded. |
| 194 releases.append(self.GetReleaseDict( | 194 releases.append(self.GetReleaseDict( |
| 195 git_hash, revision, "bleeding_edge", tag, "", "")) | 195 git_hash, revision, "bleeding_edge", tag, "", "")) |
| 196 return releases | 196 return releases |
| 197 | 197 |
| 198 def GetReleasesFromBranch(self, branch): | 198 def GetReleasesFromBranch(self, branch): |
| 199 self.GitReset("svn/%s" % branch) | 199 self.GitReset(self.vc.RemoteBranch(branch)) |
| 200 # TODO(machenbach): Rename this when switching to the git mirror. |
| 200 if branch == 'bleeding_edge': | 201 if branch == 'bleeding_edge': |
| 201 return self.GetReleasesFromBleedingEdge() | 202 return self.GetReleasesFromBleedingEdge() |
| 202 | 203 |
| 203 releases = [] | 204 releases = [] |
| 204 try: | 205 try: |
| 205 for git_hash in self.GitLog(format="%H").splitlines(): | 206 for git_hash in self.GitLog(format="%H").splitlines(): |
| 206 if VERSION_FILE not in self.GitChangedFiles(git_hash): | 207 if VERSION_FILE not in self.GitChangedFiles(git_hash): |
| 207 continue | 208 continue |
| 208 if self.ExceedsMax(releases): | 209 if self.ExceedsMax(releases): |
| 209 break # pragma: no cover | 210 break # pragma: no cover |
| (...skipping 13 matching lines...) Expand all Loading... |
| 223 # Allow Ctrl-C interrupt. | 224 # Allow Ctrl-C interrupt. |
| 224 except (KeyboardInterrupt, SystemExit): # pragma: no cover | 225 except (KeyboardInterrupt, SystemExit): # pragma: no cover |
| 225 pass | 226 pass |
| 226 | 227 |
| 227 # Clean up checked-out version file. | 228 # Clean up checked-out version file. |
| 228 self.GitCheckoutFileSafe(VERSION_FILE, "HEAD") | 229 self.GitCheckoutFileSafe(VERSION_FILE, "HEAD") |
| 229 return releases | 230 return releases |
| 230 | 231 |
| 231 def RunStep(self): | 232 def RunStep(self): |
| 232 self.GitCreateBranch(self._config["BRANCHNAME"]) | 233 self.GitCreateBranch(self._config["BRANCHNAME"]) |
| 233 # Get relevant remote branches, e.g. "svn/3.25". | 234 branches = self.vc.GetBranches() |
| 234 branches = filter(lambda s: re.match(r"^svn/\d+\.\d+$", s), | |
| 235 self.GitRemotes()) | |
| 236 # Remove 'svn/' prefix. | |
| 237 branches = map(lambda s: s[4:], branches) | |
| 238 | |
| 239 releases = [] | 235 releases = [] |
| 240 if self._options.branch == 'recent': | 236 if self._options.branch == 'recent': |
| 241 # Get only recent development on trunk, beta and stable. | 237 # Get only recent development on trunk, beta and stable. |
| 242 if self._options.max_releases == 0: # pragma: no cover | 238 if self._options.max_releases == 0: # pragma: no cover |
| 243 self._options.max_releases = 10 | 239 self._options.max_releases = 10 |
| 244 beta, stable = SortBranches(branches)[0:2] | 240 beta, stable = SortBranches(branches)[0:2] |
| 245 releases += self.GetReleasesFromBranch(stable) | 241 releases += self.GetReleasesFromBranch(stable) |
| 246 releases += self.GetReleasesFromBranch(beta) | 242 releases += self.GetReleasesFromBranch(beta) |
| 247 releases += self.GetReleasesFromBranch("trunk") | 243 releases += self.GetReleasesFromBranch("trunk") |
| 248 releases += self.GetReleasesFromBranch("bleeding_edge") | 244 releases += self.GetReleasesFromBranch("bleeding_edge") |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 UpdateChromiumCheckout, | 457 UpdateChromiumCheckout, |
| 462 RetrieveChromiumV8Releases, | 458 RetrieveChromiumV8Releases, |
| 463 RietrieveChromiumBranches, | 459 RietrieveChromiumBranches, |
| 464 CleanUp, | 460 CleanUp, |
| 465 WriteOutput, | 461 WriteOutput, |
| 466 ] | 462 ] |
| 467 | 463 |
| 468 | 464 |
| 469 if __name__ == "__main__": # pragma: no cover | 465 if __name__ == "__main__": # pragma: no cover |
| 470 sys.exit(Releases().Run()) | 466 sys.exit(Releases().Run()) |
| OLD | NEW |