Index: gclient_scm.py |
=================================================================== |
--- gclient_scm.py (revision 187192) |
+++ gclient_scm.py (working copy) |
@@ -655,11 +655,6 @@ |
detach_head = True |
if options.verbose: |
clone_cmd.append('--verbose') |
- # 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: |
- clone_cmd.extend(['--config', 'remote.origin.fetch=+refs/branch-heads/*:' |
- 'refs/remotes/branch-heads/*']) |
clone_cmd.extend([url, self.checkout_path]) |
# If the parent directory does not exist, Git clone on Windows will not |
@@ -682,15 +677,6 @@ |
try: |
self._Run(clone_cmd, options, cwd=self._root_dir, filter_fn=_GitFilter, |
print_stdout=False) |
- # Update the "branch-heads" remote-tracking branches, since clone |
- # doesn't automatically fetch those, and we might need it to checkout a |
- # specific revision below. |
- if (hasattr(options, 'with_branch_heads') and |
- options.with_branch_heads): |
- fetch_cmd = ['fetch', 'origin'] |
- if options.verbose: |
- fetch_cmd.append('--verbose') |
- self._Run(fetch_cmd, options) |
break |
except subprocess2.CalledProcessError, e: |
# Too bad we don't have access to the actual output yet. |
@@ -703,6 +689,31 @@ |
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/*'] |
+ self._Run(config_cmd, options) |
+ |
+ # 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]) |