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

Side by Side Diff: checkout.py

Issue 246093002: add --ignore-submodules to apply_issue.py (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 6 years, 8 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 | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 ['checkout', '--force', '--quiet', self.master_branch]) 609 ['checkout', '--force', '--quiet', self.master_branch])
610 self._sync_remote_branch() 610 self._sync_remote_branch()
611 611
612 if self.working_branch in branches: 612 if self.working_branch in branches:
613 self._call_git(['branch', '-D', self.working_branch]) 613 self._call_git(['branch', '-D', self.working_branch])
614 return self._get_head_commit_hash() 614 return self._get_head_commit_hash()
615 615
616 def _sync_remote_branch(self): 616 def _sync_remote_branch(self):
617 """Syncs the remote branch.""" 617 """Syncs the remote branch."""
618 # We do a 'git pull origin master:refs/remotes/origin/master' instead of 618 # We do a 'git pull origin master:refs/remotes/origin/master' instead of
619 # 'git pull origin master' because from the manpage for git-pull: 619 # 'git pull origin master' because from the manpage for git-pull:
620 # A parameter <ref> without a colon is equivalent to <ref>: when 620 # A parameter <ref> without a colon is equivalent to <ref>: when
621 # pulling/fetching, so it merges <ref> into the current branch without 621 # pulling/fetching, so it merges <ref> into the current branch without
622 # storing the remote branch anywhere locally. 622 # storing the remote branch anywhere locally.
623 remote_tracked_path = 'refs/remotes/%s/%s' % ( 623 remote_tracked_path = 'refs/remotes/%s/%s' % (
624 self.remote, self.remote_branch) 624 self.remote, self.remote_branch)
625 self._check_call_git( 625 self._check_call_git(
626 ['pull', self.remote, 626 ['pull', self.remote,
627 '%s:%s' % (self.remote_branch, remote_tracked_path), 627 '%s:%s' % (self.remote_branch, remote_tracked_path),
628 '--quiet']) 628 '--quiet'])
629 629
630 def _get_head_commit_hash(self): 630 def _get_head_commit_hash(self):
631 """Gets the current revision (in unicode) from the local branch.""" 631 """Gets the current revision (in unicode) from the local branch."""
632 return unicode(self._check_output_git(['rev-parse', 'HEAD']).strip()) 632 return unicode(self._check_output_git(['rev-parse', 'HEAD']).strip())
633 633
634 def apply_patch(self, patches, post_processors=None, verbose=False, 634 def apply_patch(self, patches, post_processors=None, verbose=False,
635 name=None, email=None): 635 name=None, email=None):
636 """Applies a patch on 'working_branch' and switches to it. 636 """Applies a patch on 'working_branch' and switches to it.
637 637
638 Also commits the changes on the local branch. 638 Also commits the changes on the local branch.
639 639
640 Ignores svn properties and raise an exception on unexpected ones. 640 Ignores svn properties and raise an exception on unexpected ones.
641 """ 641 """
642 post_processors = post_processors or self.post_processors or [] 642 post_processors = post_processors or self.post_processors or []
643 # It this throws, the checkout is corrupted. Maybe worth deleting it and 643 # It this throws, the checkout is corrupted. Maybe worth deleting it and
644 # trying again? 644 # trying again?
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 cmd = ['-c', 'user.email=%s' % email, '-c', 'user.name=%s' % name] + cmd 716 cmd = ['-c', 'user.email=%s' % email, '-c', 'user.name=%s' % name] + cmd
717 if verbose: 717 if verbose:
718 cmd.append('--verbose') 718 cmd.append('--verbose')
719 self._check_call_git(cmd) 719 self._check_call_git(cmd)
720 if self.base_ref: 720 if self.base_ref:
721 base_ref = self.base_ref 721 base_ref = self.base_ref
722 else: 722 else:
723 base_ref = '%s/%s' % (self.remote, 723 base_ref = '%s/%s' % (self.remote,
724 self.remote_branch or self.master_branch) 724 self.remote_branch or self.master_branch)
725 found_files = self._check_output_git( 725 found_files = self._check_output_git(
726 ['diff', base_ref, 726 ['diff', base_ref, '--ignore-submodules',
727 '--name-only']).splitlines(False) 727 '--name-only']).splitlines(False)
728 assert sorted(patches.filenames) == sorted(found_files), ( 728 assert sorted(patches.filenames) == sorted(found_files), (
729 sorted(patches.filenames), sorted(found_files)) 729 sorted(patches.filenames), sorted(found_files))
730 730
731 def commit(self, commit_message, user): 731 def commit(self, commit_message, user):
732 """Commits, updates the commit message and pushes.""" 732 """Commits, updates the commit message and pushes."""
733 assert self.commit_user 733 assert self.commit_user
734 assert isinstance(commit_message, unicode) 734 assert isinstance(commit_message, unicode)
735 current_branch = self._check_output_git( 735 current_branch = self._check_output_git(
736 ['rev-parse', '--abbrev-ref', 'HEAD']).strip() 736 ['rev-parse', '--abbrev-ref', 'HEAD']).strip()
737 assert current_branch == self.working_branch 737 assert current_branch == self.working_branch
738 738
739 commit_cmd = ['commit', '--amend', '-m', commit_message] 739 commit_cmd = ['commit', '--amend', '-m', commit_message]
740 if user and user != self.commit_user: 740 if user and user != self.commit_user:
741 # We do not have the first or last name of the user, grab the username 741 # We do not have the first or last name of the user, grab the username
742 # from the email and call it the original author's name. 742 # from the email and call it the original author's name.
743 # TODO(rmistry): Do not need the below if user is already in 743 # TODO(rmistry): Do not need the below if user is already in
744 # "Name <email>" format. 744 # "Name <email>" format.
745 name = user.split('@')[0] 745 name = user.split('@')[0]
746 commit_cmd.extend(['--author', '%s <%s>' % (name, user)]) 746 commit_cmd.extend(['--author', '%s <%s>' % (name, user)])
747 self._check_call_git(commit_cmd) 747 self._check_call_git(commit_cmd)
748 748
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 def revisions(self, rev1, rev2): 837 def revisions(self, rev1, rev2):
838 return self.checkout.revisions(rev1, rev2) 838 return self.checkout.revisions(rev1, rev2)
839 839
840 @property 840 @property
841 def project_name(self): 841 def project_name(self):
842 return self.checkout.project_name 842 return self.checkout.project_name
843 843
844 @property 844 @property
845 def project_path(self): 845 def project_path(self):
846 return self.checkout.project_path 846 return self.checkout.project_path
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698