Rev 2858: (robertc) Knit repo format tidyups from the packs branch. (Robert Collins) in http://people.ubuntu.com/~robertc/baz2.0/knit-repo
Robert Collins
robertc at robertcollins.net
Tue Sep 25 05:25:40 BST 2007
At http://people.ubuntu.com/~robertc/baz2.0/knit-repo
------------------------------------------------------------
revno: 2858
revision-id: robertc at robertcollins.net-20070925042530-t6k5echm7yaz9maf
parent: pqm at pqm.ubuntu.com-20070925032108-y6nxt0xmghqldn4g
committer: Robert Collins <robertc at robertcollins.net>
branch nick: knit-repo
timestamp: Tue 2007-09-25 14:25:30 +1000
message:
(robertc) Knit repo format tidyups from the packs branch. (Robert Collins)
modified:
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
=== modified file 'bzrlib/repofmt/knitrepo.py'
--- a/bzrlib/repofmt/knitrepo.py 2007-09-16 23:48:15 +0000
+++ b/bzrlib/repofmt/knitrepo.py 2007-09-25 04:25:30 +0000
@@ -14,6 +14,14 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+from bzrlib.lazy_import import lazy_import
+lazy_import(globals(), """
+from bzrlib import (
+ debug,
+ )
+from bzrlib.store import revision
+from bzrlib.store.revision.knit import KnitRevisionStore
+""")
from bzrlib import (
bzrdir,
deprecated_graph,
@@ -36,7 +44,7 @@
)
import bzrlib.revision as _mod_revision
from bzrlib.store.versioned import VersionedFileStore
-from bzrlib.trace import mutter, note, warning
+from bzrlib.trace import mutter, mutter_callsite
from bzrlib.util import bencode
@@ -143,6 +151,9 @@
operation and will be removed in the future.
:return: a dictionary of revision_id->revision_parents_list.
"""
+ if 'evil' in debug.debug_flags:
+ mutter_callsite(3,
+ "get_revision_graph scales with size of history.")
# special case NULL_REVISION
if revision_id == _mod_revision.NULL_REVISION:
return {}
@@ -150,7 +161,7 @@
a_weave = self._get_revision_vf()
if revision_id is None:
return a_weave.get_graph()
- elif revision_id not in a_weave:
+ if revision_id not in a_weave:
raise errors.NoSuchRevision(self, revision_id)
else:
# add what can be reached from revision_id
@@ -163,6 +174,9 @@
:param revision_ids: an iterable of revisions to graph or None for all.
:return: a Graph object with the graph reachable from revision_ids.
"""
+ if 'evil' in debug.debug_flags:
+ mutter_callsite(3,
+ "get_revision_graph_with_ghosts scales with size of history.")
result = deprecated_graph.Graph()
vf = self._get_revision_vf()
versions = set(vf.versions())
@@ -227,6 +241,7 @@
class KnitRepository3(KnitRepository):
+ # knit3 repositories need a RootCommitBuilder
_commit_builder_class = RootCommitBuilder
def __init__(self, _format, a_bzrdir, control_files, _revision_store,
@@ -282,7 +297,6 @@
def _get_revision_store(self, repo_transport, control_files):
"""See RepositoryFormat._get_revision_store()."""
- from bzrlib.store.revision.knit import KnitRevisionStore
versioned_file_store = VersionedFileStore(
repo_transport,
file_mode=control_files._file_mode,
@@ -318,7 +332,7 @@
repository.
"""
mutter('creating repository in %s.', a_bzrdir.transport.base)
- dirs = ['revision-store', 'knits']
+ dirs = ['knits']
files = []
utf8_files = [('format', self.get_format_string())]
@@ -356,7 +370,7 @@
text_store = self._get_text_store(repo_transport, control_files)
control_store = self._get_control_store(repo_transport, control_files)
_revision_store = self._get_revision_store(repo_transport, control_files)
- return KnitRepository(_format=self,
+ return self.repository_class(_format=self,
a_bzrdir=a_bzrdir,
control_files=control_files,
_revision_store=_revision_store,
@@ -380,6 +394,8 @@
This format was introduced in bzr 0.8.
"""
+ repository_class = KnitRepository
+
def __ne__(self, other):
return self.__class__ is not other.__class__
@@ -439,32 +455,6 @@
"""See RepositoryFormat.get_format_description()."""
return "Knit repository format 3"
- def open(self, a_bzrdir, _found=False, _override_transport=None):
- """See RepositoryFormat.open().
-
- :param _override_transport: INTERNAL USE ONLY. Allows opening the
- repository at a slightly different url
- than normal. I.e. during 'upgrade'.
- """
- if not _found:
- format = RepositoryFormat.find_format(a_bzrdir)
- assert format.__class__ == self.__class__
- if _override_transport is not None:
- repo_transport = _override_transport
- else:
- repo_transport = a_bzrdir.get_repository_transport(None)
- control_files = lockable_files.LockableFiles(repo_transport, 'lock',
- lockdir.LockDir)
- text_store = self._get_text_store(repo_transport, control_files)
- control_store = self._get_control_store(repo_transport, control_files)
- _revision_store = self._get_revision_store(repo_transport, control_files)
- return self.repository_class(_format=self,
- a_bzrdir=a_bzrdir,
- control_files=control_files,
- _revision_store=_revision_store,
- control_store=control_store,
- text_store=text_store)
-
def _get_stream_as_bytes(knit, required_versions):
"""Generate a serialised data stream.
@@ -487,4 +477,3 @@
for version, options, length, parents in data_list:
data.append([version, options, parents, callable(length)])
return bencode.bencode(data)
-
More information about the bazaar-commits
mailing list