1
# Copyright (C) 2006, 2007, 2008, 2009 Canonical Ltd
1
# Copyright (C) 2006-2010 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
284
287
def _get_branch_reference(self):
285
288
path = self._path_for_remote_call(self._client)
286
289
medium = self._client._medium
287
if not medium._is_remote_before((1, 13)):
291
('BzrDir.open_branchV3', (2, 1)),
292
('BzrDir.open_branchV2', (1, 13)),
293
('BzrDir.open_branch', None),
295
for verb, required_version in candidate_calls:
296
if required_version and medium._is_remote_before(required_version):
289
response = self._call('BzrDir.open_branchV2', path)
290
if response[0] not in ('ref', 'branch'):
291
raise errors.UnexpectedSmartServerResponse(response)
299
response = self._call(verb, path)
293
300
except errors.UnknownSmartMethod:
294
medium._remember_remote_is_before((1, 13))
295
response = self._call('BzrDir.open_branch', path)
296
if response[0] != 'ok':
301
if required_version is None:
303
medium._remember_remote_is_before(required_version)
306
if verb == 'BzrDir.open_branch':
307
if response[0] != 'ok':
308
raise errors.UnexpectedSmartServerResponse(response)
309
if response[1] != '':
310
return ('ref', response[1])
312
return ('branch', '')
313
if response[0] not in ('ref', 'branch'):
297
314
raise errors.UnexpectedSmartServerResponse(response)
298
if response[1] != '':
299
return ('ref', response[1])
301
return ('branch', '')
303
317
def _get_tree_branch(self):
304
318
"""See BzrDir._get_tree_branch()."""
1483
1497
return self._real_repository.get_signature_text(revision_id)
1485
1499
@needs_read_lock
1486
def get_inventory_xml(self, revision_id):
1488
return self._real_repository.get_inventory_xml(revision_id)
1490
def deserialise_inventory(self, revision_id, xml):
1492
return self._real_repository.deserialise_inventory(revision_id, xml)
1500
def _get_inventory_xml(self, revision_id):
1502
return self._real_repository._get_inventory_xml(revision_id)
1494
1504
def reconcile(self, other=None, thorough=False):
1495
1505
self._ensure_real()
2823
2833
raise NoSuchRevision(find('branch'), err.error_args[0])
2824
2834
elif err.error_verb == 'nosuchrevision':
2825
2835
raise NoSuchRevision(find('repository'), err.error_args[0])
2826
elif err.error_tuple == ('nobranch',):
2827
raise errors.NotBranchError(path=find('bzrdir').root_transport.base)
2836
elif err.error_verb == 'nobranch':
2837
if len(err.error_args) >= 1:
2838
extra = err.error_args[0]
2841
raise errors.NotBranchError(path=find('bzrdir').root_transport.base,
2828
2843
elif err.error_verb == 'norepository':
2829
2844
raise errors.NoRepositoryPresent(find('bzrdir'))
2830
2845
elif err.error_verb == 'LockContention':