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

Side by Side Diff: gclient_scm.py

Issue 437903002: Add --no-history option to fetch and gclient for shallow clones. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Add test to gclient_smoketest.py Created 6 years, 4 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
« no previous file with comments | « gclient.py ('k') | gclient_utils.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 807 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 clone_cmd = cfg + ['clone', '--no-checkout', '--progress'] 818 clone_cmd = cfg + ['clone', '--no-checkout', '--progress']
819 if self.cache_dir: 819 if self.cache_dir:
820 clone_cmd.append('--shared') 820 clone_cmd.append('--shared')
821 if options.verbose: 821 if options.verbose:
822 clone_cmd.append('--verbose') 822 clone_cmd.append('--verbose')
823 clone_cmd.append(url) 823 clone_cmd.append(url)
824 # If the parent directory does not exist, Git clone on Windows will not 824 # If the parent directory does not exist, Git clone on Windows will not
825 # create it, so we need to do it manually. 825 # create it, so we need to do it manually.
826 parent_dir = os.path.dirname(self.checkout_path) 826 parent_dir = os.path.dirname(self.checkout_path)
827 gclient_utils.safe_makedirs(parent_dir) 827 gclient_utils.safe_makedirs(parent_dir)
828
829 template_dir = None
830 if options.no_history:
831 if gclient_utils.IsGitSha(revision):
832 # In the case of a subproject, the pinned sha is not necessarily the
833 # head of the remote branch (so we can't just use --depth=N). Instead,
834 # we tell git to fetch all the remote objects from SHA..HEAD by means of
835 # a template git dir which has a 'shallow' file pointing to the sha.
836 template_dir = tempfile.mkdtemp(
837 prefix='_gclient_gittmp_%s' % os.path.basename(self.checkout_path),
838 dir=parent_dir)
839 self._Run(['init', '--bare', template_dir], options, cwd=self._root_dir)
840 with open(os.path.join(template_dir, 'shallow'), 'w') as template_file:
841 template_file.write(revision)
842 clone_cmd.append('--template=' + template_dir)
843 else:
844 # Otherwise, we're just interested in the HEAD. Just use --depth.
845 clone_cmd.append('--depth=1')
846
828 tmp_dir = tempfile.mkdtemp( 847 tmp_dir = tempfile.mkdtemp(
829 prefix='_gclient_%s_' % os.path.basename(self.checkout_path), 848 prefix='_gclient_%s_' % os.path.basename(self.checkout_path),
830 dir=parent_dir) 849 dir=parent_dir)
831 try: 850 try:
832 clone_cmd.append(tmp_dir) 851 clone_cmd.append(tmp_dir)
833 self._Run(clone_cmd, options, cwd=self._root_dir, retry=True) 852 self._Run(clone_cmd, options, cwd=self._root_dir, retry=True)
834 gclient_utils.safe_makedirs(self.checkout_path) 853 gclient_utils.safe_makedirs(self.checkout_path)
835 gclient_utils.safe_rename(os.path.join(tmp_dir, '.git'), 854 gclient_utils.safe_rename(os.path.join(tmp_dir, '.git'),
836 os.path.join(self.checkout_path, '.git')) 855 os.path.join(self.checkout_path, '.git'))
837 except: 856 except:
838 traceback.print_exc(file=self.out_fh) 857 traceback.print_exc(file=self.out_fh)
839 raise 858 raise
840 finally: 859 finally:
841 if os.listdir(tmp_dir): 860 if os.listdir(tmp_dir):
842 self.Print('_____ removing non-empty tmp dir %s' % tmp_dir) 861 self.Print('_____ removing non-empty tmp dir %s' % tmp_dir)
843 gclient_utils.rmtree(tmp_dir) 862 gclient_utils.rmtree(tmp_dir)
863 if template_dir:
864 gclient_utils.rmtree(template_dir)
844 self._UpdateBranchHeads(options, fetch=True) 865 self._UpdateBranchHeads(options, fetch=True)
845 self._Checkout(options, revision.replace('refs/heads/', ''), quiet=True) 866 self._Checkout(options, revision.replace('refs/heads/', ''), quiet=True)
846 if self._GetCurrentBranch() is None: 867 if self._GetCurrentBranch() is None:
847 # Squelch git's very verbose detached HEAD warning and use our own 868 # Squelch git's very verbose detached HEAD warning and use our own
848 self.Print( 869 self.Print(
849 ('Checked out %s to a detached HEAD. Before making any commits\n' 870 ('Checked out %s to a detached HEAD. Before making any commits\n'
850 'in this repo, you should use \'git checkout <branch>\' to switch to\n' 871 'in this repo, you should use \'git checkout <branch>\' to switch to\n'
851 'an existing branch or use \'git checkout %s -b <branch>\' to\n' 872 'an existing branch or use \'git checkout %s -b <branch>\' to\n'
852 'create a new branch for your work.') % (revision, self.remote)) 873 'create a new branch for your work.') % (revision, self.remote))
853 874
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after
1539 new_command.append('--force') 1560 new_command.append('--force')
1540 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: 1561 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]:
1541 new_command.extend(('--accept', 'theirs-conflict')) 1562 new_command.extend(('--accept', 'theirs-conflict'))
1542 elif options.manually_grab_svn_rev: 1563 elif options.manually_grab_svn_rev:
1543 new_command.append('--force') 1564 new_command.append('--force')
1544 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: 1565 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]:
1545 new_command.extend(('--accept', 'postpone')) 1566 new_command.extend(('--accept', 'postpone'))
1546 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: 1567 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]:
1547 new_command.extend(('--accept', 'postpone')) 1568 new_command.extend(('--accept', 'postpone'))
1548 return new_command 1569 return new_command
OLDNEW
« no previous file with comments | « gclient.py ('k') | gclient_utils.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698