Index: tools/release/releases.py |
diff --git a/tools/release/releases.py b/tools/release/releases.py |
index 46c90b7a9cc3cf86e685ebd2384575693a709084..40394d7d3ef6395aa84cafd8af9426197f11d358 100755 |
--- a/tools/release/releases.py |
+++ b/tools/release/releases.py |
@@ -217,21 +217,6 @@ class RetrieveV8Releases(Step): |
git_hash, master_position, master_hash, branch, version, |
patches, body), self["patch"] |
- def GetReleasesFromMaster(self): |
- # TODO(machenbach): Implement this in git as soon as we tag again on |
- # master. |
- # tag_text = self.SVN("log https://v8.googlecode.com/svn/tags -v |
- # --limit 20") |
- # releases = [] |
- # for (tag, revision) in re.findall(BLEEDING_EDGE_TAGS_RE, tag_text): |
- # git_hash = self.vc.SvnGit(revision) |
- |
- # Add bleeding edge release. It does not contain patches or a code |
- # review link, as tags are not uploaded. |
- # releases.append(self.GetReleaseDict( |
- # git_hash, revision, git_hash, self.vc.MasterBranch(), tag, "", "")) |
- return [] |
- |
def GetReleasesFromBranch(self, branch): |
self.GitReset(self.vc.RemoteBranch(branch)) |
if branch == self.vc.MasterBranch(): |
@@ -265,28 +250,58 @@ class RetrieveV8Releases(Step): |
self.GitCheckoutFileSafe(VERSION_FILE, "HEAD") |
return releases |
+ def GetReleaseFromRevision(self, revision): |
+ releases = [] |
+ try: |
+ if (VERSION_FILE not in self.GitChangedFiles(revision) or |
+ not self.GitCheckoutFileSafe(VERSION_FILE, revision)): |
+ print "Skipping revision %s" % revision |
+ return [] # pragma: no cover |
+ |
+ branches = map( |
+ str.strip, |
+ self.Git("branch -r --contains %s" % revision).strip().splitlines(), |
+ ) |
+ branch = "" |
+ for b in branches: |
+ if b == "origin/candidates": |
+ branch = "candidates" |
+ break |
+ if b.startswith("branch-heads/"): |
+ branch = b.split("branch-heads/")[1] |
+ break |
+ else: |
+ print "Could not determine branch for %s" % revision |
+ |
+ release, _ = self.GetRelease(revision, branch) |
+ releases.append(release) |
+ |
+ # Allow Ctrl-C interrupt. |
+ except (KeyboardInterrupt, SystemExit): # pragma: no cover |
+ pass |
+ |
+ # Clean up checked-out version file. |
+ self.GitCheckoutFileSafe(VERSION_FILE, "HEAD") |
+ return releases |
+ |
+ |
def RunStep(self): |
self.GitCreateBranch(self._config["BRANCHNAME"]) |
- branches = self.vc.GetBranches() |
releases = [] |
if self._options.branch == 'recent': |
- # Get only recent development on candidates, beta and stable. |
- if self._options.max_releases == 0: # pragma: no cover |
- self._options.max_releases = 10 |
- beta, stable = SortBranches(branches)[0:2] |
- releases += self.GetReleasesFromBranch(stable) |
- releases += self.GetReleasesFromBranch(beta) |
- releases += self.GetReleasesFromBranch(self.vc.CandidateBranch()) |
- releases += self.GetReleasesFromBranch(self.vc.MasterBranch()) |
+ # List every release from the last 7 days. |
+ revisions = self.GetRecentReleases(max_age=7 * 24 * 60 * 60) |
+ for revision in revisions: |
+ releases += self.GetReleaseFromRevision(revision) |
elif self._options.branch == 'all': # pragma: no cover |
# Retrieve the full release history. |
- for branch in branches: |
+ for branch in self.vc.GetBranches(): |
releases += self.GetReleasesFromBranch(branch) |
releases += self.GetReleasesFromBranch(self.vc.CandidateBranch()) |
releases += self.GetReleasesFromBranch(self.vc.MasterBranch()) |
else: # pragma: no cover |
# Retrieve history for a specified branch. |
- assert self._options.branch in (branches + |
+ assert self._options.branch in (self.vc.GetBranches() + |
[self.vc.CandidateBranch(), self.vc.MasterBranch()]) |
releases += self.GetReleasesFromBranch(self._options.branch) |