Teach releases script to read bleeding_edge tags.
The command 'git svn log' does unfortunately not provide the tag-revision relation. We therefore use 'svn log' to retrieve it from the remote repository. BUG= R=jarin@chromium.org Review URL: https://codereview.chromium.org/421553002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22646 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
afcfa7d2b7
commit
e251f91f0c
@ -52,6 +52,11 @@ DEPS_RE = re.compile(r'^\s*(?:"v8_revision": "'
|
||||
'|"http\:\/\/v8\.googlecode\.com\/svn\/trunk@)'
|
||||
'([0-9]+)".*$', re.M)
|
||||
|
||||
# Expression to pick tag and revision for bleeding edge tags. To be used with
|
||||
# output of 'svn log'.
|
||||
BLEEDING_EDGE_TAGS_RE = re.compile(
|
||||
r"A \/tags\/([^\s]+) \(from \/branches\/bleeding_edge\:(\d+)\)")
|
||||
|
||||
|
||||
def SortBranches(branches):
|
||||
"""Sort branches with version number names."""
|
||||
@ -140,24 +145,14 @@ class RetrieveV8Releases(Step):
|
||||
patches = "-%s" % patches
|
||||
return patches
|
||||
|
||||
def GetRelease(self, git_hash, branch):
|
||||
self.ReadAndPersistVersion()
|
||||
base_version = [self["major"], self["minor"], self["build"]]
|
||||
version = ".".join(base_version)
|
||||
body = self.GitLog(n=1, format="%B", git_hash=git_hash)
|
||||
|
||||
patches = ""
|
||||
if self["patch"] != "0":
|
||||
version += ".%s" % self["patch"]
|
||||
patches = self.GetMergedPatches(body)
|
||||
|
||||
title = self.GitLog(n=1, format="%s", git_hash=git_hash)
|
||||
def GetReleaseDict(
|
||||
self, git_hash, bleeding_edge_rev, branch, version, patches, cl_body):
|
||||
revision = self.GitSVNFindSVNRev(git_hash)
|
||||
return {
|
||||
# The SVN revision on the branch.
|
||||
"revision": revision,
|
||||
# The SVN revision on bleeding edge (only for newer trunk pushes).
|
||||
"bleeding_edge": self.GetBleedingEdgeFromPush(title),
|
||||
"bleeding_edge": bleeding_edge_rev,
|
||||
# The branch name.
|
||||
"branch": branch,
|
||||
# The version for displaying in the form 3.26.3 or 3.26.3.12.
|
||||
@ -172,14 +167,45 @@ class RetrieveV8Releases(Step):
|
||||
"chromium_branch": "",
|
||||
# Link to the CL on code review. Trunk pushes are not uploaded, so this
|
||||
# field will be populated below with the recent roll CL link.
|
||||
"review_link": MatchSafe(REVIEW_LINK_RE.search(body)),
|
||||
"review_link": MatchSafe(REVIEW_LINK_RE.search(cl_body)),
|
||||
# Link to the commit message on google code.
|
||||
"revision_link": ("https://code.google.com/p/v8/source/detail?r=%s"
|
||||
% revision),
|
||||
}, self["patch"]
|
||||
}
|
||||
|
||||
def GetRelease(self, git_hash, branch):
|
||||
self.ReadAndPersistVersion()
|
||||
base_version = [self["major"], self["minor"], self["build"]]
|
||||
version = ".".join(base_version)
|
||||
body = self.GitLog(n=1, format="%B", git_hash=git_hash)
|
||||
|
||||
patches = ""
|
||||
if self["patch"] != "0":
|
||||
version += ".%s" % self["patch"]
|
||||
patches = self.GetMergedPatches(body)
|
||||
|
||||
title = self.GitLog(n=1, format="%s", git_hash=git_hash)
|
||||
return self.GetReleaseDict(
|
||||
git_hash, self.GetBleedingEdgeFromPush(title), branch, version,
|
||||
patches, body), self["patch"]
|
||||
|
||||
def GetReleasesFromBleedingEdge(self):
|
||||
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.GitSVNFindGitHash(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, "bleeding_edge", tag, "", ""))
|
||||
return releases
|
||||
|
||||
def GetReleasesFromBranch(self, branch):
|
||||
self.GitReset("svn/%s" % branch)
|
||||
if branch == 'bleeding_edge':
|
||||
return self.GetReleasesFromBleedingEdge()
|
||||
|
||||
releases = []
|
||||
try:
|
||||
for git_hash in self.GitLog(format="%H").splitlines():
|
||||
@ -225,14 +251,16 @@ class RetrieveV8Releases(Step):
|
||||
releases += self.GetReleasesFromBranch(stable)
|
||||
releases += self.GetReleasesFromBranch(beta)
|
||||
releases += self.GetReleasesFromBranch("trunk")
|
||||
releases += self.GetReleasesFromBranch("bleeding_edge")
|
||||
elif self._options.branch == 'all': # pragma: no cover
|
||||
# Retrieve the full release history.
|
||||
for branch in branches:
|
||||
releases += self.GetReleasesFromBranch(branch)
|
||||
releases += self.GetReleasesFromBranch("trunk")
|
||||
releases += self.GetReleasesFromBranch("bleeding_edge")
|
||||
else: # pragma: no cover
|
||||
# Retrieve history for a specified branch.
|
||||
assert self._options.branch in branches + ["trunk"]
|
||||
assert self._options.branch in branches + ["trunk", "bleeding_edge"]
|
||||
releases += self.GetReleasesFromBranch(self._options.branch)
|
||||
|
||||
self["releases"] = sorted(releases,
|
||||
|
@ -1167,6 +1167,33 @@ LOG=N
|
||||
MergeToBranch(TEST_CONFIG, self).Run(args)
|
||||
|
||||
def testReleases(self):
|
||||
tag_response_text = """
|
||||
------------------------------------------------------------------------
|
||||
r22631 | author1@chromium.org | 2014-07-28 02:05:29 +0200 (Mon, 28 Jul 2014)
|
||||
Changed paths:
|
||||
A /tags/3.28.43 (from /trunk:22630)
|
||||
|
||||
Tagging version 3.28.43
|
||||
------------------------------------------------------------------------
|
||||
r22629 | author2@chromium.org | 2014-07-26 05:09:29 +0200 (Sat, 26 Jul 2014)
|
||||
Changed paths:
|
||||
A /tags/3.28.41 (from /branches/bleeding_edge:22626)
|
||||
|
||||
Tagging version 3.28.41
|
||||
------------------------------------------------------------------------
|
||||
r22556 | author3@chromium.org | 2014-07-23 13:31:59 +0200 (Wed, 23 Jul 2014)
|
||||
Changed paths:
|
||||
A /tags/3.27.34.7 (from /branches/3.27:22555)
|
||||
|
||||
Tagging version 3.27.34.7
|
||||
------------------------------------------------------------------------
|
||||
r22627 | author4@chromium.org | 2014-07-26 01:39:15 +0200 (Sat, 26 Jul 2014)
|
||||
Changed paths:
|
||||
A /tags/3.28.40 (from /branches/bleeding_edge:22624)
|
||||
|
||||
Tagging version 3.28.40
|
||||
------------------------------------------------------------------------
|
||||
"""
|
||||
json_output = self.MakeEmptyTempFile()
|
||||
csv_output = self.MakeEmptyTempFile()
|
||||
TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile()
|
||||
@ -1230,6 +1257,15 @@ LOG=N
|
||||
Git("log -1 --format=%ci hash6", ""),
|
||||
Git("checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "",
|
||||
cb=ResetVersion(22, 5)),
|
||||
Git("reset --hard svn/bleeding_edge", ""),
|
||||
Git("log https://v8.googlecode.com/svn/tags -v --limit 20",
|
||||
tag_response_text),
|
||||
Git("svn find-rev r22626", "hash_22626"),
|
||||
Git("svn find-rev hash_22626", "22626"),
|
||||
Git("log -1 --format=%ci hash_22626", "01:23"),
|
||||
Git("svn find-rev r22624", "hash_22624"),
|
||||
Git("svn find-rev hash_22624", "22624"),
|
||||
Git("log -1 --format=%ci hash_22624", "02:34"),
|
||||
Git("status -s -uno", ""),
|
||||
Git("checkout -f master", ""),
|
||||
Git("pull", ""),
|
||||
@ -1260,12 +1296,22 @@ LOG=N
|
||||
Releases(TEST_CONFIG, self).Run(args)
|
||||
|
||||
# Check expected output.
|
||||
csv = ("3.22.3,trunk,345,4567,\r\n"
|
||||
csv = ("3.28.41,bleeding_edge,22626,,\r\n"
|
||||
"3.28.40,bleeding_edge,22624,,\r\n"
|
||||
"3.22.3,trunk,345,4567,\r\n"
|
||||
"3.21.2,3.21,123,,\r\n"
|
||||
"3.3.1.1,3.3,234,,12\r\n")
|
||||
self.assertEquals(csv, FileToText(csv_output))
|
||||
|
||||
expected_json = [
|
||||
{"bleeding_edge": "22626", "patches_merged": "", "version": "3.28.41",
|
||||
"chromium_revision": "", "branch": "bleeding_edge", "revision": "22626",
|
||||
"review_link": "", "date": "01:23", "chromium_branch": "",
|
||||
"revision_link": "https://code.google.com/p/v8/source/detail?r=22626"},
|
||||
{"bleeding_edge": "22624", "patches_merged": "", "version": "3.28.40",
|
||||
"chromium_revision": "", "branch": "bleeding_edge", "revision": "22624",
|
||||
"review_link": "", "date": "02:34", "chromium_branch": "",
|
||||
"revision_link": "https://code.google.com/p/v8/source/detail?r=22624"},
|
||||
{"bleeding_edge": "", "patches_merged": "", "version": "3.22.3",
|
||||
"chromium_revision": "4567", "branch": "trunk", "revision": "345",
|
||||
"review_link": "", "date": "", "chromium_branch": "7",
|
||||
|
Loading…
Reference in New Issue
Block a user