|
@@ -396,7 +396,8 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
|
|
|
|
|
|
def __init__(self, parent, name, url, managed, custom_deps,
|
|
|
custom_vars, custom_hooks, deps_file, should_process,
|
|
|
- should_recurse, relative, condition, print_outbuf=False):
|
|
|
+ should_recurse, relative, condition, protocol='https',
|
|
|
+ print_outbuf=False):
|
|
|
gclient_utils.WorkItem.__init__(self, name)
|
|
|
DependencySettings.__init__(
|
|
|
self, parent, url, managed, custom_deps, custom_vars,
|
|
@@ -462,6 +463,8 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
|
|
|
# dependency
|
|
|
self.print_outbuf = print_outbuf
|
|
|
|
|
|
+ self.protocol = protocol
|
|
|
+
|
|
|
if not self.name and self.parent:
|
|
|
raise gclient_utils.Error('Dependency without name')
|
|
|
|
|
@@ -690,7 +693,8 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
|
|
|
GitDependency(
|
|
|
parent=self,
|
|
|
name=name,
|
|
|
- url=url,
|
|
|
+ # Update URL with parent dep's protocol
|
|
|
+ url=GitDependency.updateProtocol(url, self.protocol),
|
|
|
managed=True,
|
|
|
custom_deps=None,
|
|
|
custom_vars=self.custom_vars,
|
|
@@ -699,7 +703,8 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
|
|
|
should_process=should_process,
|
|
|
should_recurse=name in self.recursedeps,
|
|
|
relative=use_relative_paths,
|
|
|
- condition=condition))
|
|
|
+ condition=condition,
|
|
|
+ protocol=self.protocol))
|
|
|
|
|
|
deps_to_add.sort(key=lambda x: x.name)
|
|
|
return deps_to_add
|
|
@@ -1342,6 +1347,16 @@ def _detect_host_os():
|
|
|
class GitDependency(Dependency):
|
|
|
"""A Dependency object that represents a single git checkout."""
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def updateProtocol(url, protocol):
|
|
|
+ """Updates given URL's protocol"""
|
|
|
+ # only works on urls, skips local paths
|
|
|
+ if not url or not protocol or not re.match('([a-z]+)://', url) or \
|
|
|
+ re.match('file://', url):
|
|
|
+ return url
|
|
|
+
|
|
|
+ return re.sub('^([a-z]+):', protocol + ':', url)
|
|
|
+
|
|
|
#override
|
|
|
def GetScmName(self):
|
|
|
"""Always 'git'."""
|
|
@@ -1523,7 +1538,9 @@ it or fix the checkout.
|
|
|
should_recurse=True,
|
|
|
relative=None,
|
|
|
condition=None,
|
|
|
- print_outbuf=True))
|
|
|
+ print_outbuf=True,
|
|
|
+ # Pass parent URL protocol down the tree for child deps to use.
|
|
|
+ protocol=s['url'].split('://')[0] if s['url'] else None))
|
|
|
except KeyError:
|
|
|
raise gclient_utils.Error('Invalid .gclient file. Solution is '
|
|
|
'incomplete: %s' % s)
|
|
@@ -1752,7 +1769,8 @@ it or fix the checkout.
|
|
|
GitDependency(
|
|
|
parent=self,
|
|
|
name=entry,
|
|
|
- url=prev_url,
|
|
|
+ # Update URL with parent dep's protocol
|
|
|
+ url=GitDependency.updateProtocol(prev_url, self.protocol),
|
|
|
managed=False,
|
|
|
custom_deps={},
|
|
|
custom_vars={},
|
|
@@ -1761,7 +1779,8 @@ it or fix the checkout.
|
|
|
should_process=True,
|
|
|
should_recurse=False,
|
|
|
relative=None,
|
|
|
- condition=None))
|
|
|
+ condition=None,
|
|
|
+ protocol=self.protocol))
|
|
|
if modified_files and self._options.delete_unversioned_trees:
|
|
|
print('\nWARNING: \'%s\' is no longer part of this client.\n'
|
|
|
'Despite running \'gclient sync -D\' no action was taken '
|