summaryrefslogtreecommitdiff
path: root/morphlib/repocache.py
diff options
context:
space:
mode:
authorPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-03-26 18:59:01 +0000
committerPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-03-26 19:27:19 +0000
commit45e39e81698df91251c7fac5a642e211e98d834b (patch)
treef4d2fa2774dd29f302617002bd8da417928a1408 /morphlib/repocache.py
parent9404317020ff0455cbfd3ca7976d546af823759b (diff)
downloadmorph-45e39e81698df91251c7fac5a642e211e98d834b.tar.gz
Add support for definitions version 8baserock/pedroalvarez/defv8-submodules-squashed
This code is a rework from changes done by: - Tiago Gomes <tiago.gomes@codethink.co.uk> https://storyboard.baserock.org/#!/story/86 Change-Id: I3475c2bcb648a272fee33bc878a521f79d4e6581
Diffstat (limited to 'morphlib/repocache.py')
-rw-r--r--morphlib/repocache.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/morphlib/repocache.py b/morphlib/repocache.py
index f6978ec4..941d958a 100644
--- a/morphlib/repocache.py
+++ b/morphlib/repocache.py
@@ -369,7 +369,7 @@ class RepoCache(object):
return self._get_repo(repo_name)
def ensure_submodules(self, toplevel_repo,
- toplevel_ref): # pragma: no cover
+ toplevel_ref, submodules={}): # pragma: no cover
'''Ensure any submodules of a given repo are cached and up to date.'''
def submodules_for_repo(repo_path, ref):
@@ -377,7 +377,8 @@ class RepoCache(object):
submodules = morphlib.git.Submodules(repo_path, ref,
runcmd_cb=self.runcmd_cb)
submodules.load()
- return [(submod.url, submod.commit) for submod in submodules]
+ return [(submod.name, submod.url, submod.commit)
+ for submod in submodules]
except morphlib.git.NoModulesFileError:
return []
@@ -385,8 +386,10 @@ class RepoCache(object):
subs_to_process = submodules_for_repo(toplevel_repo.dirname,
toplevel_ref)
while subs_to_process:
- url, ref = subs_to_process.pop()
+ name, url, ref = subs_to_process.pop()
done.add((url, ref))
+ if name in submodules:
+ url = submodules[name]['url']
cached_repo = self.get_updated_repo(url, ref=ref)