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