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

Unified Diff: gclient_scm.py

Issue 13951009: Make sure branch-heads is configured whenever requested. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gclient_scm.py
===================================================================
--- gclient_scm.py (revision 194365)
+++ gclient_scm.py (working copy)
@@ -316,6 +316,7 @@
quiet = []
if not options.verbose:
quiet = ['--quiet']
+ self._UpdateBranchHeads(options, fetch=False)
self._Run(['fetch', 'origin', '--prune'] + quiet, options)
self._Run(['reset', '--hard', revision] + quiet, options)
self.UpdateSubmoduleConfig()
@@ -384,6 +385,8 @@
if verbose:
print(remote_output.strip())
+ self._UpdateBranchHeads(options, fetch=True)
+
# This is a big hammer, debatable if it should even be here...
if options.force or options.reset:
self._Run(['reset', '--hard', 'HEAD'], options)
@@ -692,32 +695,10 @@
continue
raise e
- for _ in range(3):
- try:
- # Add the "branch-heads" refspecs. Do this separately from the clone
- # command since apparently some versions of git don't support 'clone
- # --config'.
- # Don't assume 'with_branch_heads' is added by 'gclient sync' setup,
- # since _Clone() can by reached in roundabout ways (e.g. 'gclient
- # revert').
- if hasattr(options, 'with_branch_heads') and options.with_branch_heads:
- config_cmd = ['config', 'remote.origin.fetch',
- '+refs/branch-heads/*:refs/remotes/branch-heads/*',
- '^\\+refs/branch-heads/\\*:.*$']
- self._Run(config_cmd, options)
+ # Update the "branch-heads" remote-tracking branches, since we might need it
+ # to checkout a specific revision below.
+ self._UpdateBranchHeads(options, fetch=True)
- # Update the "branch-heads" remote-tracking branches, since we might
- # need it to checkout a specific revision below.
- fetch_cmd = ['fetch', 'origin']
- if options.verbose:
- fetch_cmd.append('--verbose')
- self._Run(fetch_cmd, options)
- break
- except subprocess2.CalledProcessError, e:
- print(str(e))
- print('Retrying...')
- continue
-
if detach_head:
# Squelch git's very verbose detached HEAD warning and use our own
self._Capture(['checkout', '--quiet', '%s' % revision])
@@ -870,6 +851,28 @@
stderr=subprocess2.PIPE,
cwd=self.checkout_path).strip()
+ def _UpdateBranchHeads(self, options, fetch=False):
+ """Adds, and optionally fetches, "branch-heads" refspecs if requested."""
+ if hasattr(options, 'with_branch_heads') and options.with_branch_heads:
+ backoff_time = 5
+ for _ in range(3):
+ try:
+ config_cmd = ['config', 'remote.origin.fetch',
+ '+refs/branch-heads/*:refs/remotes/branch-heads/*',
+ '^\\+refs/branch-heads/\\*:.*$']
+ self._Run(config_cmd, options)
+ if fetch:
+ fetch_cmd = ['fetch', 'origin']
+ if options.verbose:
+ fetch_cmd.append('--verbose')
+ self._Run(fetch_cmd, options)
+ break
+ except subprocess2.CalledProcessError, e:
+ print(str(e))
+ print('Retrying in %.1f seconds...' % backoff_time)
+ time.sleep(backoff_time)
+ backoff_time *= 1.3
+
def _Run(self, args, options, **kwargs):
kwargs.setdefault('cwd', self.checkout_path)
kwargs.setdefault('print_stdout', True)
« 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