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