OLD | NEW |
1 # coding=utf8 | 1 # coding=utf8 |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 """Manages a project checkout. | 5 """Manages a project checkout. |
6 | 6 |
7 Includes support for svn, git-svn and git. | 7 Includes support for svn, git-svn and git. |
8 """ | 8 """ |
9 | 9 |
10 import ConfigParser | 10 import ConfigParser |
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 | 555 |
556 class GitCheckout(CheckoutBase): | 556 class GitCheckout(CheckoutBase): |
557 """Manages a git checkout.""" | 557 """Manages a git checkout.""" |
558 def __init__(self, root_dir, project_name, remote_branch, git_url, | 558 def __init__(self, root_dir, project_name, remote_branch, git_url, |
559 commit_user, post_processors=None, base_ref=None): | 559 commit_user, post_processors=None, base_ref=None): |
560 super(GitCheckout, self).__init__(root_dir, project_name, post_processors) | 560 super(GitCheckout, self).__init__(root_dir, project_name, post_processors) |
561 self.base_ref = base_ref | 561 self.base_ref = base_ref |
562 self.git_url = git_url | 562 self.git_url = git_url |
563 self.commit_user = commit_user | 563 self.commit_user = commit_user |
564 self.remote_branch = remote_branch | 564 self.remote_branch = remote_branch |
565 assert self.remote_branch | |
566 # The working branch where patches will be applied. It will track the | 565 # The working branch where patches will be applied. It will track the |
567 # remote branch. | 566 # remote branch. |
568 self.working_branch = 'working_branch' | 567 self.working_branch = 'working_branch' |
569 # There is no reason to not hardcode origin. | 568 # There is no reason to not hardcode origin. |
570 self.pull_remote = 'origin' | 569 self.pull_remote = 'origin' |
571 self.push_remote = 'upstream' | 570 self.push_remote = 'upstream' |
572 | 571 |
573 def prepare(self, revision): | 572 def prepare(self, revision): |
574 """Resets the git repository in a clean state. | 573 """Resets the git repository in a clean state. |
575 | 574 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
618 | 617 |
619 Also commits the changes on the local branch. | 618 Also commits the changes on the local branch. |
620 | 619 |
621 Ignores svn properties and raise an exception on unexpected ones. | 620 Ignores svn properties and raise an exception on unexpected ones. |
622 """ | 621 """ |
623 post_processors = post_processors or self.post_processors or [] | 622 post_processors = post_processors or self.post_processors or [] |
624 # It this throws, the checkout is corrupted. Maybe worth deleting it and | 623 # It this throws, the checkout is corrupted. Maybe worth deleting it and |
625 # trying again? | 624 # trying again? |
626 if self.remote_branch: | 625 if self.remote_branch: |
627 self._check_call_git( | 626 self._check_call_git( |
628 ['checkout', | 627 ['checkout', '-b', self.working_branch, |
629 '-b', self.working_branch, | |
630 '-t', '%s/%s' % (self.pull_remote, self.remote_branch), | 628 '-t', '%s/%s' % (self.pull_remote, self.remote_branch), |
631 '--quiet']) | 629 '--quiet']) |
632 | 630 |
633 for index, p in enumerate(patches): | 631 for index, p in enumerate(patches): |
634 stdout = [] | 632 stdout = [] |
635 try: | 633 try: |
636 filepath = os.path.join(self.project_path, p.filename) | 634 filepath = os.path.join(self.project_path, p.filename) |
637 if p.is_delete: | 635 if p.is_delete: |
638 if (not os.path.exists(filepath) and | 636 if (not os.path.exists(filepath) and |
639 any(p1.source_filename == p.filename for p1 in patches[0:index])): | 637 any(p1.source_filename == p.filename for p1 in patches[0:index])): |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
822 def revisions(self, rev1, rev2): | 820 def revisions(self, rev1, rev2): |
823 return self.checkout.revisions(rev1, rev2) | 821 return self.checkout.revisions(rev1, rev2) |
824 | 822 |
825 @property | 823 @property |
826 def project_name(self): | 824 def project_name(self): |
827 return self.checkout.project_name | 825 return self.checkout.project_name |
828 | 826 |
829 @property | 827 @property |
830 def project_path(self): | 828 def project_path(self): |
831 return self.checkout.project_path | 829 return self.checkout.project_path |
OLD | NEW |