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