Index: gclient_scm.py |
=================================================================== |
--- gclient_scm.py (revision 186973) |
+++ gclient_scm.py (working copy) |
@@ -655,6 +655,11 @@ |
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 |
@@ -677,6 +682,15 @@ |
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. |