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

Side by Side Diff: gclient_scm.py

Issue 910913003: Reland "Make gclient ready for the Blink (DEPS to main project)" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Undo populateGit deflake attemp in fake_repos.py Created 5 years, 10 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 | « gclient.py ('k') | scm.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 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Gclient-specific SCM-specific operations.""" 5 """Gclient-specific SCM-specific operations."""
6 6
7 from __future__ import print_function 7 from __future__ import print_function
8 8
9 import errno 9 import errno
10 import logging 10 import logging
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 # always specify branches as they are in the upstream repo. 382 # always specify branches as they are in the upstream repo.
383 rev_type = "branch" 383 rev_type = "branch"
384 else: 384 else:
385 # hash is also a tag, only make a distinction at checkout 385 # hash is also a tag, only make a distinction at checkout
386 rev_type = "hash" 386 rev_type = "hash"
387 387
388 mirror = self._GetMirror(url, options) 388 mirror = self._GetMirror(url, options)
389 if mirror: 389 if mirror:
390 url = mirror.mirror_path 390 url = mirror.mirror_path
391 391
392 # If we are going to introduce a new project, there is a possibility that
393 # we are syncing back to a state where the project was originally a
394 # sub-project rolled by DEPS (realistic case: crossing the Blink merge point
395 # syncing backwards, when Blink was a DEPS entry and not part of src.git).
396 # In such case, we might have a backup of the former .git folder, which can
397 # be used to avoid re-fetching the entire repo again (useful for bisects).
398 backup_dir = self.GetGitBackupDirPath()
399 target_dir = os.path.join(self.checkout_path, '.git')
400 if os.path.exists(backup_dir) and not os.path.exists(target_dir):
401 gclient_utils.safe_makedirs(self.checkout_path)
402 os.rename(backup_dir, target_dir)
403 # Reset to a clean state
404 self._Run(['reset', '--hard', 'HEAD'], options)
405
392 if (not os.path.exists(self.checkout_path) or 406 if (not os.path.exists(self.checkout_path) or
393 (os.path.isdir(self.checkout_path) and 407 (os.path.isdir(self.checkout_path) and
394 not os.path.exists(os.path.join(self.checkout_path, '.git')))): 408 not os.path.exists(os.path.join(self.checkout_path, '.git')))):
395 if mirror: 409 if mirror:
396 self._UpdateMirror(mirror, options) 410 self._UpdateMirror(mirror, options)
397 try: 411 try:
398 self._Clone(revision, url, options) 412 self._Clone(revision, url, options)
399 except subprocess2.CalledProcessError: 413 except subprocess2.CalledProcessError:
400 self._DeleteOrMove(options.force) 414 self._DeleteOrMove(options.force)
401 self._Clone(revision, url, options) 415 self._Clone(revision, url, options)
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 '#Initial_checkout' ) % rev) 806 '#Initial_checkout' ) % rev)
793 807
794 return sha1 808 return sha1
795 809
796 def FullUrlForRelativeUrl(self, url): 810 def FullUrlForRelativeUrl(self, url):
797 # Strip from last '/' 811 # Strip from last '/'
798 # Equivalent to unix basename 812 # Equivalent to unix basename
799 base_url = self.url 813 base_url = self.url
800 return base_url[:base_url.rfind('/')] + url 814 return base_url[:base_url.rfind('/')] + url
801 815
816 def GetGitBackupDirPath(self):
817 """Returns the path where the .git folder for the current project can be
818 staged/restored. Use case: subproject moved from DEPS <-> outer project."""
819 return os.path.join(self._root_dir,
820 'old_' + self.relpath.replace(os.sep, '_')) + '.git'
821
802 def _GetMirror(self, url, options): 822 def _GetMirror(self, url, options):
803 """Get a git_cache.Mirror object for the argument url.""" 823 """Get a git_cache.Mirror object for the argument url."""
804 if not git_cache.Mirror.GetCachePath(): 824 if not git_cache.Mirror.GetCachePath():
805 return None 825 return None
806 mirror_kwargs = { 826 mirror_kwargs = {
807 'print_func': self.filter, 827 'print_func': self.filter,
808 'refs': [] 828 'refs': []
809 } 829 }
810 # TODO(hinoka): This currently just fails because lkcr/lkgr are branches 830 # TODO(hinoka): This currently just fails because lkcr/lkgr are branches
811 # not tags. This also adds 20 seconds to every bot_update 831 # not tags. This also adds 20 seconds to every bot_update
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after
1602 new_command.append('--force') 1622 new_command.append('--force')
1603 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: 1623 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]:
1604 new_command.extend(('--accept', 'theirs-conflict')) 1624 new_command.extend(('--accept', 'theirs-conflict'))
1605 elif options.manually_grab_svn_rev: 1625 elif options.manually_grab_svn_rev:
1606 new_command.append('--force') 1626 new_command.append('--force')
1607 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: 1627 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]:
1608 new_command.extend(('--accept', 'postpone')) 1628 new_command.extend(('--accept', 'postpone'))
1609 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: 1629 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]:
1610 new_command.extend(('--accept', 'postpone')) 1630 new_command.extend(('--accept', 'postpone'))
1611 return new_command 1631 return new_command
OLDNEW
« no previous file with comments | « gclient.py ('k') | scm.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698