Rev 2223: Allow enabling/disabling various parts of the cache. in file:///data/jelmer/bzr-svn/mappings/

Jelmer Vernooij jelmer at samba.org
Sun Dec 7 21:44:11 GMT 2008


At file:///data/jelmer/bzr-svn/mappings/

------------------------------------------------------------
revno: 2223
revision-id: jelmer at samba.org-20081207214405-or0gnp5sw5vky6vt
parent: jelmer at samba.org-20081207212816-c73r6k68qqi5zjd2
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: mappings
timestamp: Sun 2008-12-07 22:44:05 +0100
message:
  Allow enabling/disabling various parts of the cache.
modified:
  config.py                      config.py-20070624185721-0j8f1ly75uo4s1lk-1
  repository.py                  repository.py-20060306123302-1f8c5069b3fe0265
  tests/test_repository.py       test_repos.py-20060508151940-ddc49a59257ca712
=== modified file 'config.py'
--- a/config.py	2008-12-03 15:24:59 +0000
+++ b/config.py	2008-12-07 21:44:05 +0000
@@ -31,6 +31,9 @@
         STORE_GLOBAL,
         STORE_LOCATION,
         )
+from bzrlib.errors import (
+        BzrError,
+        )
 
 import os
 
@@ -142,10 +145,21 @@
             return None
 
     def get_use_cache(self):
+        parser = self._get_parser()
         try:
-            return self._get_parser().get_bool(self.uuid, "use-cache")
+            if parser.get_bool(self.uuid, "use-cache"):
+                return set(["log", "fileids", "revids"])
+            return set()
+        except ValueError:
+            val = parser.get_value(self.uuid, "use-cache")
+            if not isinstance(val, list):
+                ret = set([val])
+            else:
+                ret = set(val)
+            if len(ret - set(["log", "fileids", "revids"])) == 0:
+                raise BzrError("Invalid setting 'use-cache': %r" % val)
         except KeyError:
-            return True
+            return None
 
     def get_log_strip_trailing_newline(self):
         """Check whether or not trailing newlines should be stripped in the 

=== modified file 'repository.py'
--- a/repository.py	2008-12-07 21:28:16 +0000
+++ b/repository.py	2008-12-07 21:44:05 +0000
@@ -148,15 +148,28 @@
 
         use_cache = self.get_config().get_use_cache()
 
+        if use_cache is None:
+            use_cache = set(["fileids", "revids"])
+            if (self.transport.has_capability("commit-revprops") and not 
+                self.transport.has_capability("log-revprops")):
+                use_cache.add("log")
+
         if use_cache:
             cache_dir = self.create_cache_dir()
+
+        if "log" in use_cache or "revids" in use_cache:
             cache_file = os.path.join(cache_dir, 'cache-v%d' % CACHE_DB_VERSION)
             if not cachedbs().has_key(cache_file):
                 cachedbs()[cache_file] = cache.connect_cachefile(cache_file)
             self.cachedb = cachedbs()[cache_file]
+
+        if "log" in use_cache:
             self._log = logwalker.CachingLogWalker(self._log, cache_db=self.cachedb)
+
+        if "fileids" in use_cache:
             cachedir_transport = get_transport(cache_dir)
             self.fileid_map = CachingFileIdMap(cachedir_transport, self.fileid_map)
+        if "revids" in use_cache:
             self.revmap = CachingRevidMap(self.revmap, self.cachedb)
             self._real_parents_provider = DiskCachingParentsProvider(self._real_parents_provider, cachedir_transport)
 

=== modified file 'tests/test_repository.py'
--- a/tests/test_repository.py	2008-12-07 21:28:16 +0000
+++ b/tests/test_repository.py	2008-12-07 21:44:05 +0000
@@ -118,7 +118,7 @@
         cb.add_dir("trunk")
         cb.close()
 
-        walker = Repository.open(repos_url))
+        walker = Repository.open(repos_url)
 
         self.assertEqual([], list(walker.find_children("trunk", 1)))
 
@@ -130,7 +130,7 @@
         t.add_file("trunk/data")
         cb.close()
 
-        walker = Repository.open(repos_url))
+        walker = Repository.open(repos_url)
 
         self.assertEqual(['trunk/data'], list(walker.find_children("trunk", 1)))
 
@@ -144,7 +144,7 @@
         t.add_file("trunk/file")
         cb.close()
 
-        walker = Repository.open(repos_url))
+        walker = Repository.open(repos_url)
 
         self.assertEqual(
                 set(['trunk/data', 'trunk/data/bla', 'trunk/file']), 
@@ -164,7 +164,7 @@
         t.add_file("trunk/file")
         cb.close()
         
-        walker = Repository.open(repos_url))
+        walker = Repository.open(repos_url)
 
         self.assertEqual(set(['trunk/data', 'trunk/data/bla']), 
                 set(walker.find_children("trunk", 1)))
@@ -190,7 +190,7 @@
         td.add_dir("trunk/data/fg", "trunk/db")
         cb.close()
 
-        walker = Repository.open(repos_url))
+        walker = Repository.open(repos_url)
 
         self.assertEqual(set(['trunk/data', 'trunk/data/bla', 
                           'trunk/data/fg', 'trunk/data/fg/f1', 
@@ -223,7 +223,7 @@
         fg.delete("trunk/data/fg/f2")
         cb.close()
 
-        walker = Repository.open(repos_url))
+        walker = Repository.open(repos_url)
 
         self.assertEqual(set(['trunk/data', 'trunk/data/bla', 
                           'trunk/data/fg', 'trunk/data/fg/f1', 'trunk/db',




More information about the bazaar-commits mailing list