@@ -219,6 +219,7 @@ def __init__(self, url, revision='HEAD', name='default.xml',
219219 self .__depth = depth
220220 self .__version : Version = None
221221 self .__remote_url = {}
222+ self .__remote_revision = {}
222223 workdir .mkdir (parents = True , exist_ok = True )
223224
224225 # gitrepo from https://github.com/grouperenault/gitrepo
@@ -243,10 +244,15 @@ def __restore_oldpwd(self):
243244 def __add_remote_url (self , remote , url ):
244245 self .__remote_url [remote ] = url
245246
247+ def __add_remote_revision (self , remote , rev ):
248+ self .__remote_revision [remote ] = rev
246249
247250 def __get_remote_url (self , remote ):
248251 return self .__remote_url [remote ]
249252
253+ def __get_remote_revision (self , remote ):
254+ return self .__remote_revision [remote ]
255+
250256 def init (self ):
251257 self .__change_to_workdir ()
252258 try :
@@ -358,17 +364,20 @@ def update_manifest(self, jobs):
358364 xml = ET .parse ('.repo/manifests/' + self .__name )
359365 manifest = xml .getroot ()
360366
361- # Get default values from manifest
362- defaults = manifest .find ('default' )
363- if defaults is not None :
364- defaultRemote = defaults .get ('remote' )
365- defaultBranch = defaults .get ('revision' )
366-
367367 for r in manifest .findall ('remote' ):
368368 url = r .get ('fetch' ).rstrip ('/' )
369369 if not re .match ("[a-zA-Z]+://" , url ):
370370 url = re .sub ('/[a-z-.]*$' , '/' , self .__url ) + url
371371 self .__add_remote_url (r .get ('name' ), url )
372+ if (rev := r .get ('revision' )) is not None :
373+ self .__add_remote_revision (r .get ('name' ), rev )
374+
375+ # Get default values from manifest
376+ defaults = manifest .find ('default' )
377+ if defaults is not None :
378+ defaultRemote = defaults .get ('remote' )
379+ defaultBranch = defaults .get ('revision' ) \
380+ or self .__get_remote_revision (defaultRemote )
372381
373382 for p in manifest .findall ('project' ):
374383 project = p .get ('name' )
0 commit comments