Rev 3522: Reinstate InterRemoteToOther. (Andrew Bennetts) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Fri Jul 4 06:24:24 BST 2008


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 3522
revision-id:pqm at pqm.ubuntu.com-20080704052414-sysxv4uno1wc8zxw
parent: pqm at pqm.ubuntu.com-20080704035620-zy61drff8onhjxno
parent: andrew.bennetts at canonical.com-20080701230519-34isn39b72whb2tf
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2008-07-04 06:24:14 +0100
message:
  Reinstate InterRemoteToOther. (Andrew Bennetts)
modified:
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
    ------------------------------------------------------------
    revno: 3515.2.1
    revision-id:andrew.bennetts at canonical.com-20080701230519-34isn39b72whb2tf
    parent: pqm at pqm.ubuntu.com-20080701042123-zcmqzb7o6znwjx34
    committer: Andrew Bennetts <andrew.bennetts at canonical.com>
    branch nick: reinstate-inter-remote-to-other
    timestamp: Wed 2008-07-02 09:05:19 +1000
    message:
      Reinstate InterRemoteToOther.  This allows pushes and pulls from a remote repository to use the best InterRepository for the underlying format.
    modified:
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2008-07-01 03:38:35 +0000
+++ b/bzrlib/repository.py	2008-07-01 23:05:19 +0000
@@ -2909,6 +2909,45 @@
         return None
 
 
+class InterRemoteToOther(InterRepository):
+
+    def __init__(self, source, target):
+        InterRepository.__init__(self, source, target)
+        self._real_inter = None
+
+    @staticmethod
+    def is_compatible(source, target):
+        if not isinstance(source, remote.RemoteRepository):
+            return False
+        # Is source's model compatible with target's model?
+        source._ensure_real()
+        real_source = source._real_repository
+        if isinstance(real_source, remote.RemoteRepository):
+            raise NotImplementedError(
+                "We don't support remote repos backed by remote repos yet.")
+        return InterRepository._same_model(real_source, target)
+
+    def _ensure_real_inter(self):
+        if self._real_inter is None:
+            self.source._ensure_real()
+            real_source = self.source._real_repository
+            self._real_inter = InterRepository.get(real_source, self.target)
+    
+    def fetch(self, revision_id=None, pb=None, find_ghosts=False):
+        self._ensure_real_inter()
+        return self._real_inter.fetch(revision_id=revision_id, pb=pb,
+            find_ghosts=find_ghosts)
+
+    def copy_content(self, revision_id=None):
+        self._ensure_real_inter()
+        self._real_inter.copy_content(revision_id=revision_id)
+
+    @classmethod
+    def _get_repo_format_to_test(self):
+        return None
+
+
+
 InterRepository.register_optimiser(InterDifferingSerializer)
 InterRepository.register_optimiser(InterSameDataRepository)
 InterRepository.register_optimiser(InterWeaveRepo)
@@ -2917,6 +2956,7 @@
 InterRepository.register_optimiser(InterKnit1and2)
 InterRepository.register_optimiser(InterPackRepo)
 InterRepository.register_optimiser(InterOtherToRemote)
+InterRepository.register_optimiser(InterRemoteToOther)
 
 
 class CopyConverter(object):




More information about the bazaar-commits mailing list