From 46a477336400a8bfd1ff6fc358b74e0d2b4759d0 Mon Sep 17 00:00:00 2001 From: Jannis Pohlmann Date: Tue, 17 Apr 2012 13:36:35 +0100 Subject: Remember repo objects in LocalRepoCache to always return the same ones. --- morphlib/localrepocache.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'morphlib/localrepocache.py') diff --git a/morphlib/localrepocache.py b/morphlib/localrepocache.py index b6aa272b..27c581aa 100644 --- a/morphlib/localrepocache.py +++ b/morphlib/localrepocache.py @@ -80,6 +80,7 @@ class LocalRepoCache(object): bundle_base_url += '/' # pragma: no cover self._bundle_base_url = bundle_base_url self._ex = morphlib.execute.Execute(cachedir, logging.debug) + self._cached_repo_objects = {} def _exists(self, filename): # pragma: no cover '''Does a file exist? @@ -239,8 +240,14 @@ class LocalRepoCache(object): def get_repo(self, reponame): '''Return an object representing a cached repository.''' - for repourl, path in self._base_iterate(reponame): - if self._exists(path): - return morphlib.cachedrepo.CachedRepo(repourl, path) + if reponame in self._cached_repo_objects: + return self._cached_repo_objects[reponame] + else: + for repourl, path in self._base_iterate(reponame): + if self._exists(path): + repo = morphlib.cachedrepo.CachedRepo( + reponame, repourl, path) + self._cached_repo_objects[reponame] = repo + return repo raise NotCached(reponame) -- cgit v1.2.1