Rev 4651: Deserialise IncompatibleRepositories errors in the client, generating in http://bazaar.launchpad.net/~lifeless/bzr/bug-393677
Robert Collins
robertc at robertcollins.net
Wed Aug 26 02:18:49 BST 2009
At http://bazaar.launchpad.net/~lifeless/bzr/bug-393677
------------------------------------------------------------
revno: 4651
revision-id: robertc at robertcollins.net-20090826011813-46x8kcuzwz97opoi
parent: pqm at pqm.ubuntu.com-20090825233734-ozgeetbq9aagneer
committer: Robert Collins <robertc at robertcollins.net>
branch nick: bug-393677
timestamp: Wed 2009-08-26 11:18:13 +1000
message:
Deserialise IncompatibleRepositories errors in the client, generating
nicer feedback when the smart server encounters such a situation.
=== modified file 'bzrlib/errors.py'
--- a/bzrlib/errors.py 2009-08-21 05:48:59 +0000
+++ b/bzrlib/errors.py 2009-08-26 01:18:13 +0000
@@ -793,6 +793,12 @@
class IncompatibleRepositories(BzrError):
+ """Report an error that two repositories are not compatible.
+
+ Note that the source and target repositories are permitted to be strings:
+ this exception is thrown from the smart server and may refer to a
+ repository the client hasn't opened.
+ """
_fmt = "%(target)s\n" \
"is not compatible with\n" \
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py 2009-08-17 03:51:44 +0000
+++ b/bzrlib/remote.py 2009-08-26 01:18:13 +0000
@@ -2759,7 +2759,10 @@
'Missing key %r in context %r', key_err.args[0], context)
raise err
- if err.error_verb == 'NoSuchRevision':
+ if err.error_verb == 'IncompatibleRepositories':
+ raise errors.IncompatibleRepositories(err.error_args[0],
+ err.error_args[1], err.error_args[2])
+ elif err.error_verb == 'NoSuchRevision':
raise NoSuchRevision(find('branch'), err.error_args[0])
elif err.error_verb == 'nosuchrevision':
raise NoSuchRevision(find('repository'), err.error_args[0])
=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py 2009-08-17 21:24:24 +0000
+++ b/bzrlib/tests/test_remote.py 2009-08-26 01:18:13 +0000
@@ -2668,6 +2668,13 @@
expected_error = errors.ReadError(path)
self.assertEqual(expected_error, translated_error)
+ def test_IncompatibleRepositories(self):
+ translated_error = self.translateTuple(('IncompatibleRepositories',
+ "repo1", "repo2", "details here"))
+ expected_error = errors.IncompatibleRepositories("repo1", "repo2",
+ "details here")
+ self.assertEqual(expected_error, translated_error)
+
def test_PermissionDenied_no_args(self):
path = 'a path'
translated_error = self.translateTuple(('PermissionDenied',), path=path)
More information about the bazaar-commits
mailing list