Rev 62: Introduce a format 2 format. in http://people.ubuntu.com/~robertc/baz2.0/plugins/search/trunk

Robert Collins robertc at robertcollins.net
Tue Dec 2 20:22:13 GMT 2008


At http://people.ubuntu.com/~robertc/baz2.0/plugins/search/trunk

------------------------------------------------------------
revno: 62
revision-id: robertc at robertcollins.net-20081202202212-wj8rpyqimf4rv0jm
parent: robertc at robertcollins.net-20081202201352-fhasm0onx1limzzn
committer: Robert Collins <robertc at robertcollins.net>
branch nick: trunk
timestamp: Wed 2008-12-03 07:22:12 +1100
message:
  Introduce a format 2 format.
modified:
  index.py                       index.py-20080608055509-hnimeek7q8tctkqf-2
  tests/test_index.py            test_index.py-20080608055509-hnimeek7q8tctkqf-4
=== modified file 'index.py'
--- a/index.py	2008-12-02 20:13:52 +0000
+++ b/index.py	2008-12-02 20:22:12 +0000
@@ -23,14 +23,11 @@
 
 from bzrlib import branch as _mod_branch
 from bzrlib import ui
+from bzrlib.btree_index import BTreeGraphIndex, BTreeBuilder
 from bzrlib.bzrdir import BzrDirMeta1
 import bzrlib.config
 from bzrlib.errors import NotBranchError, NoSuchFile, UnknownFormatError
 from bzrlib.index import CombinedGraphIndex, GraphIndex, InMemoryGraphIndex
-#from bzrlib.plugins.index2.btree_index import (
-#    BTreeGraphIndex as GraphIndex,
-#    BTreeBuilder as InMemoryGraphIndex,
-#    )
 from bzrlib.lockdir import LockDir
 try:
     from bzrlib.osutils import md5
@@ -72,8 +69,13 @@
 from bzrlib.transport import get_transport
 from bzrlib.tsort import topo_sort
 
-
 _FORMAT_1 = 'bzr-search search folder 1\n'
+_FORMAT_2 = 'bzr-search search folder 2\n'
+_FORMATS = {
+    # format: index builder, index reader, index deletes
+    _FORMAT_1:(InMemoryGraphIndex, GraphIndex, False),
+    _FORMAT_2:(BTreeBuilder, BTreeGraphIndex, True)
+    }
 _tokeniser_re = None
 
 
@@ -118,8 +120,14 @@
     lockdir.create()
     lockdir.lock_write()
     try:
-        index_transport.put_bytes('format', _FORMAT_1)
-        names_list = InMemoryGraphIndex(0, 1)
+        if format_number == 1:
+            format = _FORMAT_1
+        elif format_number == 2:
+            format = _FORMAT_2
+        else:
+            raise Exception("unknown format number %s" % format_number)
+        index_transport.put_bytes('format', format)
+        names_list = _FORMATS[format][0](0, 1)
         index_transport.put_file('names', names_list.finish())
         index_transport.mkdir('obsolete')
         index_transport.mkdir('indices')
@@ -204,7 +212,10 @@
 # XXX: This wants to be a PackCollection subclass with RepositoryPackCollection
 # being a sibling. For now though, copy and paste FTW.
 class Index(object):
-    """A bzr content index."""
+    """A bzr content index.
+    
+    :ivar _format: The format tuple - see _FORMATS.
+    """
 
     def __init__(self, index_transport, branch, commits_only=False):
         """Create an index stored at index_transport.
@@ -224,7 +235,9 @@
         self._upload_transport = self._transport.clone('upload')
         self._obsolete_transport = self._transport.clone('obsolete')
         self._indices_transport = self._transport.clone('indices')
-        if _FORMAT_1 != format:
+        try:
+            self._format = _FORMATS[format]
+        except KeyError:
             raise UnknownFormatError(format, 'bzr-search')
         self._orig_names = {}
         self._current_names = {}

=== modified file 'tests/test_index.py'
--- a/tests/test_index.py	2008-12-02 20:13:52 +0000
+++ b/tests/test_index.py	2008-12-02 20:22:12 +0000
@@ -18,6 +18,7 @@
 """Tests for the index layer."""
 
 from bzrlib.errors import NotBranchError, UnknownFormatError
+from bzrlib.btree_index import BTreeGraphIndex, BTreeBuilder
 from bzrlib.index import GraphIndex
 from bzrlib import log
 from bzrlib.plugins import search
@@ -27,7 +28,7 @@
 
 class TestIndex(TestCaseWithTransport):
 
-    def test_init_index(self):
+    def test_init_index_default(self):
         branch = self.make_branch('foo')
         search_index = index.init_index(branch)
         # We should have some basic files on disk, and a valid index returned.
@@ -63,6 +64,24 @@
         self.assertTrue(transport.has('upload'))
         self.assertTrue(transport.has('indices'))
 
+    def test_init_index_2(self):
+        branch = self.make_branch('foo')
+        search_index = index.init_index(branch, 2)
+        # We should have some basic files on disk, and a valid index returned.
+        self.assertIsInstance(search_index, index.Index)
+        transport = self.get_transport('foo/.bzr/bzr-search')
+        # We expect two files:
+        # - format, containing 'bzr-search search folder 1\n'
+        # - a names file, which is an empty GraphIndex
+        self.assertEqual('bzr-search search folder 2\n',
+            transport.get_bytes('format'))
+        names_list = BTreeGraphIndex(transport, 'names', None)
+        self.assertEqual([], list(names_list.iter_all_entries()))
+        # And a number of empty directories
+        self.assertTrue(transport.has('obsolete'))
+        self.assertTrue(transport.has('upload'))
+        self.assertTrue(transport.has('indices'))
+
     def test_init_index_unindexable(self):
         # any non-metadir will do here:
         branch = self.make_branch('foo', format='weave')




More information about the bazaar-commits mailing list