@ -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 ( ' \n WARNING: \' %s \' is no longer part of this client. \n '
' Despite running \' gclient sync -D \' no action was taken '