OLD | NEW |
---|---|
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 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
393 return "origin/master" | 393 return "origin/master" |
394 | 394 |
395 def RemoteCandidateBranch(self): | 395 def RemoteCandidateBranch(self): |
396 return "origin/candidates" | 396 return "origin/candidates" |
397 | 397 |
398 def RemoteBranch(self, name): | 398 def RemoteBranch(self, name): |
399 if name in ["candidates", "master"]: | 399 if name in ["candidates", "master"]: |
400 return "origin/%s" % name | 400 return "origin/%s" % name |
401 return "branch-heads/%s" % name | 401 return "branch-heads/%s" % name |
402 | 402 |
403 def PushRef(self, ref): | |
404 self.step.Git("push origin %s" % ref) | |
405 | |
403 def Tag(self, tag, remote, message): | 406 def Tag(self, tag, remote, message): |
404 # Wait for the commit to appear. Assumes unique commit message titles (this | 407 # Wait for the commit to appear. Assumes unique commit message titles (this |
405 # is the case for all automated merge and push commits - also no title is | 408 # is the case for all automated merge and push commits - also no title is |
406 # the prefix of another title). | 409 # the prefix of another title). |
407 commit = None | 410 commit = None |
408 for wait_interval in [3, 7, 15, 35, 35]: | 411 for wait_interval in [3, 7, 15, 35, 35]: |
409 self.step.Git("fetch") | 412 self.step.Git("fetch") |
410 commit = self.step.GitLog(n=1, format="%H", grep=message, branch=remote) | 413 commit = self.step.GitLog(n=1, format="%H", grep=message, branch=remote) |
411 if commit: | 414 if commit: |
412 break | 415 break |
413 print("The commit has not replicated to git. Waiting for %s seconds." % | 416 print("The commit has not replicated to git. Waiting for %s seconds." % |
414 wait_interval) | 417 wait_interval) |
415 self.step._side_effect_handler.Sleep(wait_interval) | 418 self.step._side_effect_handler.Sleep(wait_interval) |
416 else: | 419 else: |
417 self.step.Die("Couldn't determine commit for setting the tag. Maybe the " | 420 self.step.Die("Couldn't determine commit for setting the tag. Maybe the " |
418 "git updater is lagging behind?") | 421 "git updater is lagging behind?") |
419 | 422 |
420 self.step.Git("tag %s %s" % (tag, commit)) | 423 self.step.Git("tag %s %s" % (tag, commit)) |
421 self.step.Git("push origin %s" % tag) | 424 self.PushRef(tag) |
422 | 425 |
423 | 426 |
424 class GitReadSvnWriteInterface(GitTagsOnlyMixin, GitSvnInterface): | 427 class GitReadSvnWriteInterface(GitTagsOnlyMixin, GitSvnInterface): |
425 pass | 428 pass |
426 | 429 |
427 | 430 |
428 class GitInterface(GitTagsOnlyMixin): | 431 class GitInterface(GitTagsOnlyMixin): |
429 def Fetch(self): | 432 def Fetch(self): |
430 self.step.Git("fetch") | 433 self.step.Git("fetch") |
431 | 434 |
432 def GitSvn(self, hsh, branch=""): | 435 def GitSvn(self, hsh, branch=""): |
433 return "" | 436 return "" |
434 | 437 |
435 def SvnGit(self, rev, branch=""): | 438 def SvnGit(self, rev, branch=""): |
436 raise NotImplementedError() | 439 raise NotImplementedError() |
437 | 440 |
438 def Land(self): | 441 def Land(self): |
442 # FIXME(machenbach): This will not work with checkouts from bot_update | |
443 # after flag day because it will push to the cache. Investigate if it | |
444 # will work with "cl land". | |
439 self.step.Git("push origin") | 445 self.step.Git("push origin") |
440 | 446 |
441 def CLLand(self): | 447 def CLLand(self): |
442 self.step.GitCLLand() | 448 self.step.GitCLLand() |
443 | 449 |
450 def PushRef(self, ref): | |
451 self.step.Git("push https://chromium.googlesource.com/v8/v8 %s" % ref) | |
452 | |
444 | 453 |
445 VC_INTERFACES = { | 454 VC_INTERFACES = { |
446 "git_svn": GitSvnInterface, | 455 "git_svn": GitSvnInterface, |
447 "git_read_svn_write": GitReadSvnWriteInterface, | 456 "git_read_svn_write": GitReadSvnWriteInterface, |
448 "git": GitInterface, | 457 "git": GitInterface, |
449 } | 458 } |
450 | 459 |
451 | 460 |
452 class Step(GitRecipesMixin): | 461 class Step(GitRecipesMixin): |
453 def __init__(self, text, number, config, state, options, handler): | 462 def __init__(self, text, number, config, state, options, handler): |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
715 line = re.sub("\d+$", self[prefix + "patch"], line) | 724 line = re.sub("\d+$", self[prefix + "patch"], line) |
716 output += "%s\n" % line | 725 output += "%s\n" % line |
717 TextToFile(output, version_file) | 726 TextToFile(output, version_file) |
718 | 727 |
719 def SVNCommit(self, root, commit_message): | 728 def SVNCommit(self, root, commit_message): |
720 patch = self.GitDiff("HEAD^", "HEAD") | 729 patch = self.GitDiff("HEAD^", "HEAD") |
721 TextToFile(patch, self._config["PATCH_FILE"]) | 730 TextToFile(patch, self._config["PATCH_FILE"]) |
722 self.Command("svn", "update", cwd=self._options.svn) | 731 self.Command("svn", "update", cwd=self._options.svn) |
723 if self.Command("svn", "status", cwd=self._options.svn) != "": | 732 if self.Command("svn", "status", cwd=self._options.svn) != "": |
724 self.Die("SVN checkout not clean.") | 733 self.Die("SVN checkout not clean.") |
725 if not self.Command("patch", "-d %s -p1 -i %s" % | 734 if not self.Command("patch", "-d %s -p1 -i %s" % |
Michael Achenbach
2014/11/02 12:47:03
Just wondering: Will removing files work?
| |
726 (root, self._config["PATCH_FILE"]), | 735 (root, self._config["PATCH_FILE"]), |
727 cwd=self._options.svn): | 736 cwd=self._options.svn): |
728 self.Die("Could not apply patch.") | 737 self.Die("Could not apply patch.") |
738 # Recursively add possibly newly added files. | |
739 self.Command("svn", "add --force %s" % root, cwd=self._options.svn) | |
729 self.Command( | 740 self.Command( |
730 "svn", | 741 "svn", |
731 "commit --non-interactive --username=%s --config-dir=%s -m \"%s\"" % | 742 "commit --non-interactive --username=%s --config-dir=%s -m \"%s\"" % |
732 (self._options.author, self._options.svn_config, commit_message), | 743 (self._options.author, self._options.svn_config, commit_message), |
733 cwd=self._options.svn) | 744 cwd=self._options.svn) |
734 | 745 |
735 | 746 |
736 class UploadStep(Step): | 747 class UploadStep(Step): |
737 MESSAGE = "Upload for code review." | 748 MESSAGE = "Upload for code review." |
738 | 749 |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
902 for (number, step_class) in enumerate(step_classes): | 913 for (number, step_class) in enumerate(step_classes): |
903 steps.append(MakeStep(step_class, number, self._state, self._config, | 914 steps.append(MakeStep(step_class, number, self._state, self._config, |
904 options, self._side_effect_handler)) | 915 options, self._side_effect_handler)) |
905 for step in steps[options.step:]: | 916 for step in steps[options.step:]: |
906 if step.Run(): | 917 if step.Run(): |
907 return 0 | 918 return 0 |
908 return 0 | 919 return 0 |
909 | 920 |
910 def Run(self, args=None): | 921 def Run(self, args=None): |
911 return self.RunSteps(self._Steps(), args) | 922 return self.RunSteps(self._Steps(), args) |
OLD | NEW |