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