Rev 3595: (mbp) add_fallback_repository gives more detail on incompatibilities in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Wed Jul 30 12:38:22 BST 2008
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 3595
revision-id:pqm at pqm.ubuntu.com-20080730113809-meoemzm18iybvd4k
parent: pqm at pqm.ubuntu.com-20080730050605-5hhtw13vhgailydn
parent: mbp at sourcefrog.net-20080729110516-kela9tkqwtkds96k
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2008-07-30 12:38:09 +0100
message:
(mbp) add_fallback_repository gives more detail on incompatibilities
modified:
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
------------------------------------------------------------
revno: 3582.1.7
revision-id:mbp at sourcefrog.net-20080729110516-kela9tkqwtkds96k
parent: mbp at sourcefrog.net-20080729090037-ydaypne9ewtd0v3p
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: stacking
timestamp: Tue 2008-07-29 21:05:16 +1000
message:
add_fallback_repository gives more detail on incompatibilities
modified:
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py 2008-07-30 00:30:48 +0000
+++ b/bzrlib/repository.py 2008-07-30 11:38:09 +0000
@@ -530,21 +530,21 @@
"""
if not self._format.supports_external_lookups:
raise errors.UnstackableRepositoryFormat(self._format, self.base)
- if not self._add_fallback_repository_check(repository):
- raise errors.IncompatibleRepositories(self, repository)
+ self._check_fallback_repository(repository)
self._fallback_repositories.append(repository)
self.texts.add_fallback_versioned_files(repository.texts)
self.inventories.add_fallback_versioned_files(repository.inventories)
self.revisions.add_fallback_versioned_files(repository.revisions)
self.signatures.add_fallback_versioned_files(repository.signatures)
- def _add_fallback_repository_check(self, repository):
+ def _check_fallback_repository(self, repository):
"""Check that this repository can fallback to repository safely.
+
+ Raise an error if not.
:param repository: A repository to fallback to.
- :return: True if the repositories can stack ok.
"""
- return InterRepository._same_model(self, repository)
+ return InterRepository._assert_same_model(self, repository)
def add_inventory(self, revision_id, inv, parents):
"""Add the inventory inv to the repository as revision_id.
=== modified file 'bzrlib/tests/test_repository.py'
--- a/bzrlib/tests/test_repository.py 2008-07-28 09:12:28 +0000
+++ b/bzrlib/tests/test_repository.py 2008-07-30 11:38:09 +0000
@@ -1205,10 +1205,14 @@
# mixin class for testing stack-supporting development formats
- def test_compatible_cross_formats(self):
+ def test_stack_checks_compatibility(self):
# early versions of the packing code relied on pack internals to
# stack, but the current version should be able to stack on any
# format.
+ #
+ # TODO: Possibly this should be run per-repository-format and raise
+ # TestNotApplicable on formats that don't support stacking. -- mbp
+ # 20080729
repo = self.make_repository('repo', format=self.get_format())
if repo.supports_rich_root():
# can only stack on repositories that have compatible internal
@@ -1223,8 +1227,12 @@
# you can't stack on something with incompatible data
bad_repo = self.make_repository('mismatch',
format=mismatching_format_name)
- self.assertRaises(errors.IncompatibleRepositories,
+ e = self.assertRaises(errors.IncompatibleRepositories,
repo.add_fallback_repository, bad_repo)
+ self.assertContainsRe(str(e),
+ r'(?m)KnitPackRepository.*/mismatch/.*\nis not compatible with\n'
+ r'KnitPackRepository.*/repo/.*\n'
+ r'different rich-root support')
def test_adding_pack_does_not_record_pack_names_from_other_repositories(self):
base = self.make_branch_and_tree('base', format=self.get_format())
More information about the bazaar-commits
mailing list