Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Side by Side Diff: tools/push-to-trunk/push_to_trunk.py

Issue 203773013: Retrieve current version from trunk branch in push-to-trunk. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/push-to-trunk/git_recipes.py ('k') | tools/push-to-trunk/test_scripts.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 the V8 project authors. All rights reserved. 2 # Copyright 2013 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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 # TODO(machenbach): last_push_trunk points to the svn revision on trunk. 104 # TODO(machenbach): last_push_trunk points to the svn revision on trunk.
105 # It is not used yet but we'll need it for retrieving the current version. 105 # It is not used yet but we'll need it for retrieving the current version.
106 self["last_push_trunk"] = last_push 106 self["last_push_trunk"] = last_push
107 # TODO(machenbach): This currently points to the prepare push revision that 107 # TODO(machenbach): This currently points to the prepare push revision that
108 # will be deprecated soon. After the deprecation it will point to the last 108 # will be deprecated soon. After the deprecation it will point to the last
109 # bleeding_edge revision that went into the last push. 109 # bleeding_edge revision that went into the last push.
110 self["last_push_bleeding_edge"] = last_push_bleeding_edge 110 self["last_push_bleeding_edge"] = last_push_bleeding_edge
111 111
112 112
113 class IncrementVersion(Step):
114 MESSAGE = "Increment version number."
115
116 def RunStep(self):
117 # Retrieve current version from last trunk push.
118 self.GitCheckoutFile(self.Config(VERSION_FILE), self["last_push_trunk"])
119 self.ReadAndPersistVersion()
120
121 if self.Confirm(("Automatically increment BUILD_NUMBER? (Saying 'n' will "
122 "fire up your EDITOR on %s so you can make arbitrary "
123 "changes. When you're done, save the file and exit your "
124 "EDITOR.)" % self.Config(VERSION_FILE))):
125 text = FileToText(self.Config(VERSION_FILE))
126 text = MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$",
127 r"\g<space>%s" % str(int(self["build"]) + 1),
128 text)
129 TextToFile(text, self.Config(VERSION_FILE))
130 else:
131 self.Editor(self.Config(VERSION_FILE))
132
133 # Variables prefixed with 'new_' contain the new version numbers for the
134 # ongoing trunk push.
135 self.ReadAndPersistVersion("new_")
136 self["version"] = "%s.%s.%s" % (self["new_major"],
137 self["new_minor"],
138 self["new_build"])
139
140 # TODO(machenbach): The following will be deprecated. Increment version
141 # numbers for version.cc on bleeding_edge (new build level on trunk + 1).
142 text = FileToText(self.Config(VERSION_FILE))
143 text = MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$",
144 r"\g<space>%s" % str(int(self["new_build"]) + 1),
145 text)
146 TextToFile(text, self.Config(VERSION_FILE))
147 self.ReadAndPersistVersion("new_be_")
148
149
113 class PrepareChangeLog(Step): 150 class PrepareChangeLog(Step):
114 MESSAGE = "Prepare raw ChangeLog entry." 151 MESSAGE = "Prepare raw ChangeLog entry."
115 152
116 def Reload(self, body): 153 def Reload(self, body):
117 """Attempts to reload the commit message from rietveld in order to allow 154 """Attempts to reload the commit message from rietveld in order to allow
118 late changes to the LOG flag. Note: This is brittle to future changes of 155 late changes to the LOG flag. Note: This is brittle to future changes of
119 the web page name or structure. 156 the web page name or structure.
120 """ 157 """
121 match = re.search(r"^Review URL: https://codereview\.chromium\.org/(\d+)$", 158 match = re.search(r"^Review URL: https://codereview\.chromium\.org/(\d+)$",
122 body, flags=re.M) 159 body, flags=re.M)
123 if match: 160 if match:
124 cl_url = ("https://codereview.chromium.org/%s/description" 161 cl_url = ("https://codereview.chromium.org/%s/description"
125 % match.group(1)) 162 % match.group(1))
126 try: 163 try:
127 # Fetch from Rietveld but only retry once with one second delay since 164 # Fetch from Rietveld but only retry once with one second delay since
128 # there might be many revisions. 165 # there might be many revisions.
129 body = self.ReadURL(cl_url, wait_plan=[1]) 166 body = self.ReadURL(cl_url, wait_plan=[1])
130 except urllib2.URLError: # pragma: no cover 167 except urllib2.URLError: # pragma: no cover
131 pass 168 pass
132 return body 169 return body
133 170
134 def RunStep(self): 171 def RunStep(self):
135 # These version numbers are used again later for the trunk commit.
136 self.ReadAndPersistVersion()
137 self["date"] = self.GetDate() 172 self["date"] = self.GetDate()
138 self["version"] = "%s.%s.%s" % (self["major"], 173 output = "%s: Version %s\n\n" % (self["date"], self["version"])
139 self["minor"],
140 self["build"])
141 output = "%s: Version %s\n\n" % (self["date"],
142 self["version"])
143 TextToFile(output, self.Config(CHANGELOG_ENTRY_FILE)) 174 TextToFile(output, self.Config(CHANGELOG_ENTRY_FILE))
144 commits = self.GitLog(format="%H", 175 commits = self.GitLog(format="%H",
145 git_hash="%s..HEAD" % self["last_push_bleeding_edge"]) 176 git_hash="%s..HEAD" % self["last_push_bleeding_edge"])
146 177
147 # Cache raw commit messages. 178 # Cache raw commit messages.
148 commit_messages = [ 179 commit_messages = [
149 [ 180 [
150 self.GitLog(n=1, format="%s", git_hash=commit), 181 self.GitLog(n=1, format="%s", git_hash=commit),
151 self.Reload(self.GitLog(n=1, format="%B", git_hash=commit)), 182 self.Reload(self.GitLog(n=1, format="%B", git_hash=commit)),
152 self.GitLog(n=1, format="%an", git_hash=commit), 183 self.GitLog(n=1, format="%an", git_hash=commit),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 changelog_entry = "\n".join(map(Fill80, changelog_entry.splitlines())) 215 changelog_entry = "\n".join(map(Fill80, changelog_entry.splitlines()))
185 changelog_entry = changelog_entry.lstrip() 216 changelog_entry = changelog_entry.lstrip()
186 217
187 if changelog_entry == "": # pragma: no cover 218 if changelog_entry == "": # pragma: no cover
188 self.Die("Empty ChangeLog entry.") 219 self.Die("Empty ChangeLog entry.")
189 220
190 # Safe new change log for adding it later to the trunk patch. 221 # Safe new change log for adding it later to the trunk patch.
191 TextToFile(changelog_entry, self.Config(CHANGELOG_ENTRY_FILE)) 222 TextToFile(changelog_entry, self.Config(CHANGELOG_ENTRY_FILE))
192 223
193 224
194 class IncrementVersion(Step):
195 MESSAGE = "Increment version number."
196
197 def RunStep(self):
198 new_build = str(int(self["build"]) + 1)
199
200 if self.Confirm(("Automatically increment BUILD_NUMBER? (Saying 'n' will "
201 "fire up your EDITOR on %s so you can make arbitrary "
202 "changes. When you're done, save the file and exit your "
203 "EDITOR.)" % self.Config(VERSION_FILE))):
204 text = FileToText(self.Config(VERSION_FILE))
205 text = MSub(r"(?<=#define BUILD_NUMBER)(?P<space>\s+)\d*$",
206 r"\g<space>%s" % new_build,
207 text)
208 TextToFile(text, self.Config(VERSION_FILE))
209 else:
210 self.Editor(self.Config(VERSION_FILE))
211
212 self.ReadAndPersistVersion("new_")
213
214
215 class CommitLocal(Step): 225 class CommitLocal(Step):
216 MESSAGE = "Commit to local branch." 226 MESSAGE = "Commit to local branch."
217 227
218 def RunStep(self): 228 def RunStep(self):
219 self["prep_commit_msg"] = ("Prepare push to trunk. " 229 self["prep_commit_msg"] = ("Prepare push to trunk. "
220 "Now working on version %s.%s.%s." % (self["new_major"], 230 "Now working on version %s.%s.%s." % (self["new_be_major"],
221 self["new_minor"], 231 self["new_be_minor"],
222 self["new_build"])) 232 self["new_be_build"]))
223 233
224 # Include optional TBR only in the git command. The persisted commit 234 # Include optional TBR only in the git command. The persisted commit
225 # message is used for finding the commit again later. 235 # message is used for finding the commit again later.
226 if self._options.tbr_commit: 236 if self._options.tbr_commit:
227 message = "%s\n\nTBR=%s" % (self["prep_commit_msg"], 237 message = "%s\n\nTBR=%s" % (self["prep_commit_msg"],
228 self._options.reviewer) 238 self._options.reviewer)
229 else: 239 else:
230 message = "%s" % self["prep_commit_msg"] 240 message = "%s" % self["prep_commit_msg"]
231 self.GitCommit(message) 241 self.GitCommit(message)
232 242
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 class SetVersion(Step): 332 class SetVersion(Step):
323 MESSAGE = "Set correct version for trunk." 333 MESSAGE = "Set correct version for trunk."
324 334
325 def RunStep(self): 335 def RunStep(self):
326 # The version file has been modified by the patch. Reset it to the version 336 # The version file has been modified by the patch. Reset it to the version
327 # on trunk and apply the correct version. 337 # on trunk and apply the correct version.
328 self.GitCheckoutFile(self.Config(VERSION_FILE), "svn/trunk") 338 self.GitCheckoutFile(self.Config(VERSION_FILE), "svn/trunk")
329 output = "" 339 output = ""
330 for line in FileToText(self.Config(VERSION_FILE)).splitlines(): 340 for line in FileToText(self.Config(VERSION_FILE)).splitlines():
331 if line.startswith("#define MAJOR_VERSION"): 341 if line.startswith("#define MAJOR_VERSION"):
332 line = re.sub("\d+$", self["major"], line) 342 line = re.sub("\d+$", self["new_major"], line)
333 elif line.startswith("#define MINOR_VERSION"): 343 elif line.startswith("#define MINOR_VERSION"):
334 line = re.sub("\d+$", self["minor"], line) 344 line = re.sub("\d+$", self["new_minor"], line)
335 elif line.startswith("#define BUILD_NUMBER"): 345 elif line.startswith("#define BUILD_NUMBER"):
336 line = re.sub("\d+$", self["build"], line) 346 line = re.sub("\d+$", self["new_build"], line)
337 elif line.startswith("#define PATCH_LEVEL"): 347 elif line.startswith("#define PATCH_LEVEL"):
338 line = re.sub("\d+$", "0", line) 348 line = re.sub("\d+$", "0", line)
339 elif line.startswith("#define IS_CANDIDATE_VERSION"): 349 elif line.startswith("#define IS_CANDIDATE_VERSION"):
340 line = re.sub("\d+$", "0", line) 350 line = re.sub("\d+$", "0", line)
341 output += "%s\n" % line 351 output += "%s\n" % line
342 TextToFile(output, self.Config(VERSION_FILE)) 352 TextToFile(output, self.Config(VERSION_FILE))
343 353
344 354
345 class CommitTrunk(Step): 355 class CommitTrunk(Step):
346 MESSAGE = "Commit to local trunk branch." 356 MESSAGE = "Commit to local trunk branch."
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 return False 532 return False
523 533
524 options.tbr_commit = not options.manual 534 options.tbr_commit = not options.manual
525 return True 535 return True
526 536
527 def _Steps(self): 537 def _Steps(self):
528 return [ 538 return [
529 Preparation, 539 Preparation,
530 FreshBranch, 540 FreshBranch,
531 DetectLastPush, 541 DetectLastPush,
542 IncrementVersion,
532 PrepareChangeLog, 543 PrepareChangeLog,
533 EditChangeLog, 544 EditChangeLog,
534 IncrementVersion,
535 CommitLocal, 545 CommitLocal,
536 UploadStep, 546 UploadStep,
537 CommitRepository, 547 CommitRepository,
538 StragglerCommits, 548 StragglerCommits,
539 SquashCommits, 549 SquashCommits,
540 NewBranch, 550 NewBranch,
541 ApplyChanges, 551 ApplyChanges,
542 AddChangeLog, 552 AddChangeLog,
543 SetVersion, 553 SetVersion,
544 CommitTrunk, 554 CommitTrunk,
545 SanityCheck, 555 SanityCheck,
546 CommitSVN, 556 CommitSVN,
547 TagRevision, 557 TagRevision,
548 CheckChromium, 558 CheckChromium,
549 SwitchChromium, 559 SwitchChromium,
550 UpdateChromiumCheckout, 560 UpdateChromiumCheckout,
551 UploadCL, 561 UploadCL,
552 SwitchV8, 562 SwitchV8,
553 CleanUp, 563 CleanUp,
554 ] 564 ]
555 565
556 566
557 if __name__ == "__main__": # pragma: no cover 567 if __name__ == "__main__": # pragma: no cover
558 sys.exit(PushToTrunk(CONFIG).Run()) 568 sys.exit(PushToTrunk(CONFIG).Run())
OLDNEW
« no previous file with comments | « tools/push-to-trunk/git_recipes.py ('k') | tools/push-to-trunk/test_scripts.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698