Rev 2871: (robertc) Code consolidation for the Knit repository format from the packs branch. (Robert Collins) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Thu Sep 27 07:54:40 BST 2007
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 2871
revision-id: pqm at pqm.ubuntu.com-20070927065437-oc8enxoek80hyxod
parent: pqm at pqm.ubuntu.com-20070927030442-kr30mx8du7pq8o3m
parent: robertc at robertcollins.net-20070927051534-8qi8csecebcltwhx
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2007-09-27 07:54:37 +0100
message:
(robertc) Code consolidation for the Knit repository format from the packs branch. (Robert Collins)
modified:
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
------------------------------------------------------------
revno: 2857.2.2
merged: robertc at robertcollins.net-20070927051534-8qi8csecebcltwhx
parent: robertc at robertcollins.net-20070925042530-t6k5echm7yaz9maf
committer: Robert Collins <robertc at robertcollins.net>
branch nick: knit-repo
timestamp: Thu 2007-09-27 15:15:34 +1000
message:
Review feedback.
------------------------------------------------------------
revno: 2857.2.1
merged: 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 file 'bzrlib/repofmt/knitrepo.py'
--- a/bzrlib/repofmt/knitrepo.py 2007-09-23 22:22:17 +0000
+++ b/bzrlib/repofmt/knitrepo.py 2007-09-27 06:54:37 +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
@@ -137,6 +145,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 {}
@@ -144,7 +155,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
@@ -157,6 +168,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())
@@ -221,6 +235,7 @@
class KnitRepository3(KnitRepository):
+ # knit3 repositories need a RootCommitBuilder
_commit_builder_class = RootCommitBuilder
def __init__(self, _format, a_bzrdir, control_files, _revision_store,
@@ -264,6 +279,10 @@
- a LockDir lock
"""
+ # Set this attribute in derived classes to control the repository class
+ # created by open and initialize.
+ repository_class = None
+
def _get_control_store(self, repo_transport, control_files):
"""Return the control store for this repository."""
return VersionedFileStore(
@@ -276,7 +295,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,
@@ -312,7 +330,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())]
@@ -350,7 +368,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,
@@ -374,6 +392,8 @@
This format was introduced in bzr 0.8.
"""
+ repository_class = KnitRepository
+
def __ne__(self, other):
return self.__class__ is not other.__class__
@@ -433,32 +453,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.
@@ -481,4 +475,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