Fix bug in revid caching.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 27 May 2007 14:52:52 +0000 (16:52 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 27 May 2007 14:52:52 +0000 (16:52 +0200)
README
repository.py
tests/test_repos.py

diff --git a/README b/README
index 16aa13d..2640527 100644 (file)
--- a/README
+++ b/README
@@ -79,13 +79,14 @@ In the future, I also hope to support:
   but the number of corner cases is wide, so support for this 
   has not been enabled by default yet.
 
-- Performance. Network-wise (both bandwidth and roundtrips), the plugin is in
-  good shape. However, it is currently quite CPU-intensive for no good reason 
-  and I hope to make a couple of improvements in that area.
+- Better performance. Network-wise (both bandwidth and roundtrips), the plugin 
+  is in good shape. However, it is currently quite CPU-intensive for no good 
+  reason and I hope to make a couple of improvements in that area.
 
 - Override implementation of get_revision_delta(). Will speed up 'bzr log -v'
        
-- use svn_ra_replay() on systems that have Subversion 1.4. Saves a couple of roundtrips when fetching history.
+- use svn_ra_replay() on systems that have Subversion 1.4. Saves a couple of 
+  roundtrips when fetching history.
 
 - implement svn_ra_get_dir_revs() in Subversion to fetch the properties set on 
   a specific directory all at once.
index 6bdc562..73db157 100644 (file)
@@ -162,7 +162,8 @@ class SvnRepository(Repository):
         assert self.base
         assert self.uuid
 
-        cache_file = os.path.join(self.create_cache_dir(), 'cache-v%d' % MAPPING_VERSION)
+        cache_file = os.path.join(self.create_cache_dir(), 
+                                  'cache-v%d' % MAPPING_VERSION)
         if not cachedbs.has_key(cache_file):
             cachedbs[cache_file] = sqlite3.connect(cache_file)
         self.cachedb = cachedbs[cache_file]
@@ -463,7 +464,7 @@ class SvnRepository(Repository):
                 # If there are any new entries that are not yet in the cache, 
                 # add them
                 for r in revids:
-                    self.revmap.insert_revid(revid, branch, 0, revno, 
+                    self.revmap.insert_revid(r, branch, 0, revno, 
                             "undefined")
 
                 if revid in revids:
index 28ef147..6bf6174 100644 (file)
@@ -669,6 +669,18 @@ class TestSubversionRepositoryWorks(TestCaseWithSubversionRepository):
         self.assertEqual(("", 1), 
             repository.lookup_revision_id("myid"))
 
+    def test_lookup_revision_id_overridden_not_found(self):
+        """Make sure a revision id that is looked up but doesn't exist 
+        doesn't accidently end up in the revid cache."""
+        repos_url = self.make_client('d', 'dc')
+        self.build_tree({'dc/bloe': None})
+        self.client_add("dc/bloe")
+        self.client_set_prop("dc", SVN_PROP_BZR_REVISION_ID, "myid\n")
+        self.client_commit("dc", "foobar")
+        repository = Repository.open("svn+%s" % repos_url)
+        self.assertRaises(NoSuchRevision, 
+                repository.lookup_revision_id, "foobar")
+
     def test_lookup_revision_id_invalid_uuid(self):
         repos_url = self.make_client('d', 'dc')
         repository = Repository.open("svn+%s" % repos_url)