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

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

Issue 604853002: Add new git port to merge_to_branch script. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Review Created 6 years, 2 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 | « no previous file | 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 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 def Land(self): 339 def Land(self):
340 self.step.GitSVNDCommit() 340 self.step.GitSVNDCommit()
341 341
342 def CLLand(self): 342 def CLLand(self):
343 self.step.GitDCommit() 343 self.step.GitDCommit()
344 344
345 def Tag(self, tag): 345 def Tag(self, tag):
346 self.step.GitSVNTag(tag) 346 self.step.GitSVNTag(tag)
347 347
348 348
349 class GitReadOnlyMixin(VCInterface):
350 def Pull(self):
351 self.step.GitPull()
352
353 def Fetch(self):
354 self.step.Git("fetch")
355
356 def GetTags(self):
357 return self.step.Git("tag").strip().splitlines()
358
359 def GetBranches(self):
360 # Get relevant remote branches, e.g. "origin/branch-heads/3.25".
361 branches = filter(
362 lambda s: re.match(r"^origin/branch\-heads/\d+\.\d+$", s),
363 self.step.GitRemotes())
364 # Remove 'origin/branch-heads/' prefix.
365 return map(lambda s: s[20:], branches)
366
367 def RemoteMasterBranch(self):
368 return "origin/master"
369
370 def RemoteCandidateBranch(self):
371 return "origin/candidates"
372
373 def RemoteBranch(self, name):
374 return "origin/branch-heads/%s" % name
375
376
377 class GitReadSvnWriteInterface(GitReadOnlyMixin, GitSvnInterface):
378 pass
379
380
381 VC_INTERFACES = {
382 "git_svn": GitSvnInterface,
383 "git_read_svn_write": GitReadSvnWriteInterface,
384 }
385
349 386
350 class Step(GitRecipesMixin): 387 class Step(GitRecipesMixin):
351 def __init__(self, text, number, config, state, options, handler): 388 def __init__(self, text, number, config, state, options, handler):
352 self._text = text 389 self._text = text
353 self._number = number 390 self._number = number
354 self._config = config 391 self._config = config
355 self._state = state 392 self._state = state
356 self._options = options 393 self._options = options
357 self._side_effect_handler = handler 394 self._side_effect_handler = handler
358 self.vc = GitSvnInterface() 395 self.vc = VC_INTERFACES[options.vc_interface]()
359 self.vc.InjectStep(self) 396 self.vc.InjectStep(self)
360 397
361 # The testing configuration might set a different default cwd. 398 # The testing configuration might set a different default cwd.
362 self.default_cwd = self._config.get("DEFAULT_CWD") or DEFAULT_CWD 399 self.default_cwd = self._config.get("DEFAULT_CWD") or DEFAULT_CWD
363 400
364 assert self._number >= 0 401 assert self._number >= 0
365 assert self._config is not None 402 assert self._config is not None
366 assert self._state is not None 403 assert self._state is not None
367 assert self._side_effect_handler is not None 404 assert self._side_effect_handler is not None
368 405
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 "success, this will overwrite the reviewer " 770 "success, this will overwrite the reviewer "
734 "option.")) 771 "option."))
735 parser.add_argument("--svn", 772 parser.add_argument("--svn",
736 help=("Optional full svn checkout for the commit." 773 help=("Optional full svn checkout for the commit."
737 "The folder needs to be the svn root.")) 774 "The folder needs to be the svn root."))
738 parser.add_argument("--svn-config", 775 parser.add_argument("--svn-config",
739 help=("Optional folder used as svn --config-dir.")) 776 help=("Optional folder used as svn --config-dir."))
740 parser.add_argument("-s", "--step", 777 parser.add_argument("-s", "--step",
741 help="Specify the step where to start work. Default: 0.", 778 help="Specify the step where to start work. Default: 0.",
742 default=0, type=int) 779 default=0, type=int)
780 parser.add_argument("--vc-interface",
781 help=("Choose VC interface out of git_svn|"
782 "git_read_svn_write."))
743 self._PrepareOptions(parser) 783 self._PrepareOptions(parser)
744 784
745 if args is None: # pragma: no cover 785 if args is None: # pragma: no cover
746 options = parser.parse_args() 786 options = parser.parse_args()
747 else: 787 else:
748 options = parser.parse_args(args) 788 options = parser.parse_args(args)
749 789
750 # Process common options. 790 # Process common options.
751 if options.step < 0: # pragma: no cover 791 if options.step < 0: # pragma: no cover
752 print "Bad step number %d" % options.step 792 print "Bad step number %d" % options.step
(...skipping 16 matching lines...) Expand all
769 # Derived options. 809 # Derived options.
770 options.requires_editor = not options.force 810 options.requires_editor = not options.force
771 options.wait_for_lgtm = not options.force 811 options.wait_for_lgtm = not options.force
772 options.force_readline_defaults = not options.manual 812 options.force_readline_defaults = not options.manual
773 options.force_upload = not options.manual 813 options.force_upload = not options.manual
774 814
775 # Process script specific options. 815 # Process script specific options.
776 if not self._ProcessOptions(options): 816 if not self._ProcessOptions(options):
777 parser.print_help() 817 parser.print_help()
778 return None 818 return None
819
820 if not options.vc_interface:
821 options.vc_interface = "git_svn"
779 return options 822 return options
780 823
781 def RunSteps(self, step_classes, args=None): 824 def RunSteps(self, step_classes, args=None):
782 options = self.MakeOptions(args) 825 options = self.MakeOptions(args)
783 if not options: 826 if not options:
784 return 1 827 return 1
785 828
786 state_file = "%s-state.json" % self._config["PERSISTFILE_BASENAME"] 829 state_file = "%s-state.json" % self._config["PERSISTFILE_BASENAME"]
787 if options.step == 0 and os.path.exists(state_file): 830 if options.step == 0 and os.path.exists(state_file):
788 os.remove(state_file) 831 os.remove(state_file)
789 832
790 steps = [] 833 steps = []
791 for (number, step_class) in enumerate(step_classes): 834 for (number, step_class) in enumerate(step_classes):
792 steps.append(MakeStep(step_class, number, self._state, self._config, 835 steps.append(MakeStep(step_class, number, self._state, self._config,
793 options, self._side_effect_handler)) 836 options, self._side_effect_handler))
794 for step in steps[options.step:]: 837 for step in steps[options.step:]:
795 if step.Run(): 838 if step.Run():
796 return 0 839 return 0
797 return 0 840 return 0
798 841
799 def Run(self, args=None): 842 def Run(self, args=None):
800 return self.RunSteps(self._Steps(), args) 843 return self.RunSteps(self._Steps(), args)
OLDNEW
« no previous file with comments | « no previous file | tools/push-to-trunk/test_scripts.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698