diff --git a/gclient.py b/gclient.py index eb8b3c3991..3e35ebde49 100755 --- a/gclient.py +++ b/gclient.py @@ -1778,6 +1778,8 @@ def CMDsync(parser, args): help='Clone git "branch_heads" refspecs in addition to ' 'the default refspecs. This adds about 1/2GB to a ' 'full checkout. (git only)') + parser.add_option('--with_tags', action='store_true', + help='Clone git tags in addition to the default refspecs.') parser.add_option('-t', '--transitive', action='store_true', help='When a revision is specified (in the DEPS file or ' 'with the command-line flag), transitively update ' diff --git a/gclient_scm.py b/gclient_scm.py index d457a5c5a5..acebb09963 100644 --- a/gclient_scm.py +++ b/gclient_scm.py @@ -785,6 +785,8 @@ class GitWrapper(SCMWrapper): # mirror_kwargs['refs'].extend(['refs/tags/lkgr', 'refs/tags/lkcr']) if hasattr(options, 'with_branch_heads') and options.with_branch_heads: mirror_kwargs['refs'].append('refs/branch-heads/*') + if hasattr(options, 'with_tags') and options.with_tags: + mirror_kwargs['refs'].append('refs/tags/*') return git_cache.Mirror(url, **mirror_kwargs) @staticmethod @@ -1075,14 +1077,23 @@ class GitWrapper(SCMWrapper): return self._Capture(['rev-parse', '--verify', 'FETCH_HEAD']) def _UpdateBranchHeads(self, options, fetch=False): - """Adds, and optionally fetches, "branch-heads" refspecs if requested.""" + """Adds, and optionally fetches, "branch-heads" and "tags" refspecs + if requested.""" + need_fetch = fetch if hasattr(options, 'with_branch_heads') and options.with_branch_heads: config_cmd = ['config', 'remote.%s.fetch' % self.remote, '+refs/branch-heads/*:refs/remotes/branch-heads/*', '^\\+refs/branch-heads/\\*:.*$'] self._Run(config_cmd, options) - if fetch: - self._Fetch(options) + need_fetch = True + if hasattr(options, 'with_tags') and options.with_tags: + config_cmd = ['config', 'remote.%s.fetch' % self.remote, + '+refs/tags/*:refs/tags/*', + '^\\+refs/tags/\\*:.*$'] + self._Run(config_cmd, options) + need_fetch = True + if fetch and need_fetch: + self._Fetch(options) def _Run(self, args, options, show_header=True, **kwargs): # Disable 'unused options' warning | pylint: disable=W0613