Chromium Code Reviews

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

Issue 389353003: Add script to bump up version on bleeding edge. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | | Annotate | Revision Log
« no previous file with comments | « tools/push-to-trunk/bump_up_version.py ('k') | tools/push-to-trunk/git_recipes.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 153 matching lines...)
164 164
165 FormatIssues("", v8bugs) 165 FormatIssues("", v8bugs)
166 FormatIssues("Chromium ", crbugs) 166 FormatIssues("Chromium ", crbugs)
167 167
168 if len(bug_groups) > 0: 168 if len(bug_groups) > 0:
169 return "(%s)" % ", ".join(bug_groups) 169 return "(%s)" % ", ".join(bug_groups)
170 else: 170 else:
171 return "" 171 return ""
172 172
173 173
174 def SortingKey(version):
Michael Achenbach 2014/07/15 13:30:34 Refactoring: Copied from releases.py.
175 """Key for sorting version number strings: '3.11' > '3.2.1.1'"""
176 version_keys = map(int, version.split("."))
177 # Fill up to full version numbers to normalize comparison.
178 while len(version_keys) < 4: # pragma: no cover
179 version_keys.append(0)
180 # Fill digits.
181 return ".".join(map("{0:04d}".format, version_keys))
182
183
174 # Some commands don't like the pipe, e.g. calling vi from within the script or 184 # Some commands don't like the pipe, e.g. calling vi from within the script or
175 # from subscripts like git cl upload. 185 # from subscripts like git cl upload.
176 def Command(cmd, args="", prefix="", pipe=True): 186 def Command(cmd, args="", prefix="", pipe=True):
177 # TODO(machenbach): Use timeout. 187 # TODO(machenbach): Use timeout.
178 cmd_line = "%s %s %s" % (prefix, cmd, args) 188 cmd_line = "%s %s %s" % (prefix, cmd, args)
179 print "Command: %s" % cmd_line 189 print "Command: %s" % cmd_line
180 sys.stdout.flush() 190 sys.stdout.flush()
181 try: 191 try:
182 if pipe: 192 if pipe:
183 return subprocess.check_output(cmd_line, shell=True) 193 return subprocess.check_output(cmd_line, shell=True)
(...skipping 178 matching lines...)
362 msg = msg or "Only available in manual mode." 372 msg = msg or "Only available in manual mode."
363 self.Die(msg) 373 self.Die(msg)
364 374
365 def Confirm(self, msg): 375 def Confirm(self, msg):
366 print "%s [Y/n] " % msg, 376 print "%s [Y/n] " % msg,
367 answer = self.ReadLine(default="Y") 377 answer = self.ReadLine(default="Y")
368 return answer == "" or answer == "Y" or answer == "y" 378 return answer == "" or answer == "Y" or answer == "y"
369 379
370 def DeleteBranch(self, name): 380 def DeleteBranch(self, name):
371 for line in self.GitBranch().splitlines(): 381 for line in self.GitBranch().splitlines():
372 if re.match(r".*\s+%s$" % name, line): 382 if re.match(r"\*?\s*%s$" % re.escape(name), line):
Michael Achenbach 2014/07/15 13:30:34 Bugfix: The output of GitBranch is stripped. The o
373 msg = "Branch %s exists, do you want to delete it?" % name 383 msg = "Branch %s exists, do you want to delete it?" % name
374 if self.Confirm(msg): 384 if self.Confirm(msg):
375 self.GitDeleteBranch(name) 385 self.GitDeleteBranch(name)
376 print "Branch %s deleted." % name 386 print "Branch %s deleted." % name
377 else: 387 else:
378 msg = "Can't continue. Please delete branch %s and try again." % name 388 msg = "Can't continue. Please delete branch %s and try again." % name
379 self.Die(msg) 389 self.Die(msg)
380 390
381 def InitialEnvironmentChecks(self): 391 def InitialEnvironmentChecks(self):
382 # Cancel if this is not a git checkout. 392 # Cancel if this is not a git checkout.
(...skipping 77 matching lines...)
460 def FindLastTrunkPush(self, parent_hash="", include_patches=False): 470 def FindLastTrunkPush(self, parent_hash="", include_patches=False):
461 push_pattern = "^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*" 471 push_pattern = "^Version [[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*"
462 if not include_patches: 472 if not include_patches:
463 # Non-patched versions only have three numbers followed by the "(based 473 # Non-patched versions only have three numbers followed by the "(based
464 # on...) comment." 474 # on...) comment."
465 push_pattern += " (based" 475 push_pattern += " (based"
466 branch = "" if parent_hash else "svn/trunk" 476 branch = "" if parent_hash else "svn/trunk"
467 return self.GitLog(n=1, format="%H", grep=push_pattern, 477 return self.GitLog(n=1, format="%H", grep=push_pattern,
468 parent_hash=parent_hash, branch=branch) 478 parent_hash=parent_hash, branch=branch)
469 479
480 def ArrayToVersion(self, prefix):
481 return ".".join([self[prefix + "major"],
482 self[prefix + "minor"],
483 self[prefix + "build"],
484 self[prefix + "patch"]])
485
486 def SetVersion(self, version_file, prefix):
Michael Achenbach 2014/07/15 13:30:34 Refactoring: Copied from push_to_trunk.py.
487 output = ""
488 for line in FileToText(version_file).splitlines():
489 if line.startswith("#define MAJOR_VERSION"):
490 line = re.sub("\d+$", self[prefix + "major"], line)
491 elif line.startswith("#define MINOR_VERSION"):
492 line = re.sub("\d+$", self[prefix + "minor"], line)
493 elif line.startswith("#define BUILD_NUMBER"):
494 line = re.sub("\d+$", self[prefix + "build"], line)
495 elif line.startswith("#define PATCH_LEVEL"):
496 line = re.sub("\d+$", self[prefix + "patch"], line)
497 output += "%s\n" % line
498 TextToFile(output, version_file)
470 499
471 class UploadStep(Step): 500 class UploadStep(Step):
472 MESSAGE = "Upload for code review." 501 MESSAGE = "Upload for code review."
473 502
474 def RunStep(self): 503 def RunStep(self):
475 if self._options.reviewer: 504 if self._options.reviewer:
476 print "Using account %s for review." % self._options.reviewer 505 print "Using account %s for review." % self._options.reviewer
477 reviewer = self._options.reviewer 506 reviewer = self._options.reviewer
478 else: 507 else:
479 print "Please enter the email address of a V8 reviewer for your patch: ", 508 print "Please enter the email address of a V8 reviewer for your patch: ",
(...skipping 138 matching lines...)
618 for (number, step_class) in enumerate(step_classes): 647 for (number, step_class) in enumerate(step_classes):
619 steps.append(MakeStep(step_class, number, self._state, self._config, 648 steps.append(MakeStep(step_class, number, self._state, self._config,
620 options, self._side_effect_handler)) 649 options, self._side_effect_handler))
621 for step in steps[options.step:]: 650 for step in steps[options.step:]:
622 if step.Run(): 651 if step.Run():
623 return 1 652 return 1
624 return 0 653 return 0
625 654
626 def Run(self, args=None): 655 def Run(self, args=None):
627 return self.RunSteps(self._Steps(), args) 656 return self.RunSteps(self._Steps(), args)
OLDNEW
« no previous file with comments | « tools/push-to-trunk/bump_up_version.py ('k') | tools/push-to-trunk/git_recipes.py » ('j') | no next file with comments »

Powered by Google App Engine