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 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
5 # met: | 5 # met: |
6 # | 6 # |
7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
10 # copyright notice, this list of conditions and the following | 10 # copyright notice, this list of conditions and the following |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 | 151 |
152 bugs = [] | 152 bugs = [] |
153 for commit_hash in self["patch_commit_hashes"]: | 153 for commit_hash in self["patch_commit_hashes"]: |
154 msg = self.GitLog(n=1, git_hash=commit_hash) | 154 msg = self.GitLog(n=1, git_hash=commit_hash) |
155 for bug in re.findall(r"^[ \t]*BUG[ \t]*=[ \t]*(.*?)[ \t]*$", msg, | 155 for bug in re.findall(r"^[ \t]*BUG[ \t]*=[ \t]*(.*?)[ \t]*$", msg, |
156 re.M): | 156 re.M): |
157 bugs.extend(map(lambda s: s.strip(), bug.split(","))) | 157 bugs.extend(map(lambda s: s.strip(), bug.split(","))) |
158 bug_aggregate = ",".join(sorted(bugs)) | 158 bug_aggregate = ",".join(sorted(bugs)) |
159 if bug_aggregate: | 159 if bug_aggregate: |
160 self["new_commit_msg"] += "BUG=%s\nLOG=N\n" % bug_aggregate | 160 self["new_commit_msg"] += "BUG=%s\nLOG=N\n" % bug_aggregate |
161 TextToFile(self["new_commit_msg"], self.Config(COMMITMSG_FILE)) | |
162 | 161 |
163 | 162 |
164 class ApplyPatches(Step): | 163 class ApplyPatches(Step): |
165 MESSAGE = "Apply patches for selected revisions." | 164 MESSAGE = "Apply patches for selected revisions." |
166 | 165 |
167 def RunStep(self): | 166 def RunStep(self): |
168 for commit_hash in self["patch_commit_hashes"]: | 167 for commit_hash in self["patch_commit_hashes"]: |
169 print("Applying patch for %s to %s..." | 168 print("Applying patch for %s to %s..." |
170 % (commit_hash, self["merge_to_branch"])) | 169 % (commit_hash, self["merge_to_branch"])) |
171 patch = self.GitGetPatch(commit_hash) | 170 patch = self.GitGetPatch(commit_hash) |
172 TextToFile(patch, self.Config(TEMPORARY_PATCH_FILE)) | 171 TextToFile(patch, self.Config(TEMPORARY_PATCH_FILE)) |
173 self.ApplyPatch(self.Config(TEMPORARY_PATCH_FILE), self._options.revert) | 172 self.ApplyPatch(self.Config(TEMPORARY_PATCH_FILE), self._options.revert) |
174 if self._options.patch: | 173 if self._options.patch: |
175 self.ApplyPatch(self._options.patch, self._options.revert) | 174 self.ApplyPatch(self._options.patch, self._options.revert) |
176 | 175 |
177 | 176 |
178 class PrepareVersion(Step): | 177 class PrepareVersion(Step): |
179 MESSAGE = "Prepare version file." | 178 MESSAGE = "Prepare version file." |
180 | 179 |
181 def RunStep(self): | 180 def RunStep(self): |
182 if self._options.revert_bleeding_edge: | 181 if self._options.revert_bleeding_edge: |
183 return | 182 return |
184 # These version numbers are used again for creating the tag | 183 # This is used to calculate the patch level increment. |
185 self.ReadAndPersistVersion() | 184 self.ReadAndPersistVersion() |
186 | 185 |
187 | 186 |
188 class IncrementVersion(Step): | 187 class IncrementVersion(Step): |
189 MESSAGE = "Increment version number." | 188 MESSAGE = "Increment version number." |
190 | 189 |
191 def RunStep(self): | 190 def RunStep(self): |
192 if self._options.revert_bleeding_edge: | 191 if self._options.revert_bleeding_edge: |
193 return | 192 return |
194 new_patch = str(int(self["patch"]) + 1) | 193 new_patch = str(int(self["patch"]) + 1) |
195 if self.Confirm("Automatically increment PATCH_LEVEL? (Saying 'n' will " | 194 if self.Confirm("Automatically increment PATCH_LEVEL? (Saying 'n' will " |
196 "fire up your EDITOR on %s so you can make arbitrary " | 195 "fire up your EDITOR on %s so you can make arbitrary " |
197 "changes. When you're done, save the file and exit your " | 196 "changes. When you're done, save the file and exit your " |
198 "EDITOR.)" % self.Config(VERSION_FILE)): | 197 "EDITOR.)" % self.Config(VERSION_FILE)): |
199 text = FileToText(self.Config(VERSION_FILE)) | 198 text = FileToText(self.Config(VERSION_FILE)) |
200 text = MSub(r"(?<=#define PATCH_LEVEL)(?P<space>\s+)\d*$", | 199 text = MSub(r"(?<=#define PATCH_LEVEL)(?P<space>\s+)\d*$", |
201 r"\g<space>%s" % new_patch, | 200 r"\g<space>%s" % new_patch, |
202 text) | 201 text) |
203 TextToFile(text, self.Config(VERSION_FILE)) | 202 TextToFile(text, self.Config(VERSION_FILE)) |
204 else: | 203 else: |
205 self.Editor(self.Config(VERSION_FILE)) | 204 self.Editor(self.Config(VERSION_FILE)) |
206 self.ReadAndPersistVersion("new_") | 205 self.ReadAndPersistVersion("new_") |
| 206 self["version"] = "%s.%s.%s.%s" % (self["new_major"], |
| 207 self["new_minor"], |
| 208 self["new_build"], |
| 209 self["new_patch"]) |
207 | 210 |
208 | 211 |
209 class CommitLocal(Step): | 212 class CommitLocal(Step): |
210 MESSAGE = "Commit to local branch." | 213 MESSAGE = "Commit to local branch." |
211 | 214 |
212 def RunStep(self): | 215 def RunStep(self): |
| 216 if not self._options.revert_bleeding_edge: |
| 217 self["new_commit_msg"] = "Version %s\n\n%s" % (self["version"], |
| 218 self["new_commit_msg"]) |
| 219 TextToFile(self["new_commit_msg"], self.Config(COMMITMSG_FILE)) |
213 self.GitCommit(file_name=self.Config(COMMITMSG_FILE)) | 220 self.GitCommit(file_name=self.Config(COMMITMSG_FILE)) |
214 | 221 |
215 | 222 |
216 class CommitRepository(Step): | 223 class CommitRepository(Step): |
217 MESSAGE = "Commit to the repository." | 224 MESSAGE = "Commit to the repository." |
218 | 225 |
219 def RunStep(self): | 226 def RunStep(self): |
220 self.GitCheckout(self.Config(BRANCHNAME)) | 227 self.GitCheckout(self.Config(BRANCHNAME)) |
221 self.WaitForLGTM() | 228 self.WaitForLGTM() |
222 self.GitPresubmit() | 229 self.GitPresubmit() |
(...skipping 14 matching lines...) Expand all Loading... |
237 self["svn_revision"] = self.GitSVNFindSVNRev(commit_hash) | 244 self["svn_revision"] = self.GitSVNFindSVNRev(commit_hash) |
238 print "subversion revision number is r%s" % self["svn_revision"] | 245 print "subversion revision number is r%s" % self["svn_revision"] |
239 | 246 |
240 | 247 |
241 class TagRevision(Step): | 248 class TagRevision(Step): |
242 MESSAGE = "Create the tag." | 249 MESSAGE = "Create the tag." |
243 | 250 |
244 def RunStep(self): | 251 def RunStep(self): |
245 if self._options.revert_bleeding_edge: | 252 if self._options.revert_bleeding_edge: |
246 return | 253 return |
247 self["version"] = "%s.%s.%s.%s" % (self["new_major"], | |
248 self["new_minor"], | |
249 self["new_build"], | |
250 self["new_patch"]) | |
251 print "Creating tag svn/tags/%s" % self["version"] | 254 print "Creating tag svn/tags/%s" % self["version"] |
252 if self["merge_to_branch"] == "trunk": | 255 if self["merge_to_branch"] == "trunk": |
253 self["to_url"] = "trunk" | 256 self["to_url"] = "trunk" |
254 else: | 257 else: |
255 self["to_url"] = "branches/%s" % self["merge_to_branch"] | 258 self["to_url"] = "branches/%s" % self["merge_to_branch"] |
256 self.SVN("copy -r %s https://v8.googlecode.com/svn/%s " | 259 self.SVN("copy -r %s https://v8.googlecode.com/svn/%s " |
257 "https://v8.googlecode.com/svn/tags/%s -m " | 260 "https://v8.googlecode.com/svn/tags/%s -m " |
258 "\"Tagging version %s\"" | 261 "\"Tagging version %s\"" |
259 % (self["svn_revision"], self["to_url"], | 262 % (self["svn_revision"], self["to_url"], |
260 self["version"], self["version"])) | 263 self["version"], self["version"])) |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 UploadStep, | 325 UploadStep, |
323 CommitRepository, | 326 CommitRepository, |
324 PrepareSVN, | 327 PrepareSVN, |
325 TagRevision, | 328 TagRevision, |
326 CleanUp, | 329 CleanUp, |
327 ] | 330 ] |
328 | 331 |
329 | 332 |
330 if __name__ == "__main__": # pragma: no cover | 333 if __name__ == "__main__": # pragma: no cover |
331 sys.exit(MergeToBranch(CONFIG).Run()) | 334 sys.exit(MergeToBranch(CONFIG).Run()) |
OLD | NEW |