~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/remote.py

  • Committer: Andrew Bennetts
  • Date: 2010-01-13 23:16:20 UTC
  • mfrom: (4957 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4960.
  • Revision ID: andrew.bennetts@canonical.com-20100113231620-n6in2yjib2v6z03g
MergeĀ lp:bzr.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006, 2007, 2008, 2009 Canonical Ltd
2
2
#
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
114
114
 
115
115
        self._probe_bzrdir()
116
116
 
117
 
    def __repr__(self):
118
 
        return '%s(%r)' % (self.__class__.__name__, self._client)
119
 
 
120
117
    def _probe_bzrdir(self):
121
118
        medium = self._client._medium
122
119
        path = self._path_for_remote_call(self._client)
287
284
    def _get_branch_reference(self):
288
285
        path = self._path_for_remote_call(self._client)
289
286
        medium = self._client._medium
290
 
        candidate_calls = [
291
 
            ('BzrDir.open_branchV3', (2, 1)),
292
 
            ('BzrDir.open_branchV2', (1, 13)),
293
 
            ('BzrDir.open_branch', None),
294
 
            ]
295
 
        for verb, required_version in candidate_calls:
296
 
            if required_version and medium._is_remote_before(required_version):
297
 
                continue
 
287
        if not medium._is_remote_before((1, 13)):
298
288
            try:
299
 
                response = self._call(verb, path)
 
289
                response = self._call('BzrDir.open_branchV2', path)
 
290
                if response[0] not in ('ref', 'branch'):
 
291
                    raise errors.UnexpectedSmartServerResponse(response)
 
292
                return response
300
293
            except errors.UnknownSmartMethod:
301
 
                if required_version is None:
302
 
                    raise
303
 
                medium._remember_remote_is_before(required_version)
304
 
            else:
305
 
                break
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])
311
 
            else:
312
 
                return ('branch', '')
313
 
        if response[0] not in ('ref', 'branch'):
 
294
                medium._remember_remote_is_before((1, 13))
 
295
        response = self._call('BzrDir.open_branch', path)
 
296
        if response[0] != 'ok':
314
297
            raise errors.UnexpectedSmartServerResponse(response)
315
 
        return response
 
298
        if response[1] != '':
 
299
            return ('ref', response[1])
 
300
        else:
 
301
            return ('branch', '')
316
302
 
317
303
    def _get_tree_branch(self):
318
304
        """See BzrDir._get_tree_branch()."""
1497
1483
        return self._real_repository.get_signature_text(revision_id)
1498
1484
 
1499
1485
    @needs_read_lock
1500
 
    def _get_inventory_xml(self, revision_id):
1501
 
        self._ensure_real()
1502
 
        return self._real_repository._get_inventory_xml(revision_id)
 
1486
    def get_inventory_xml(self, revision_id):
 
1487
        self._ensure_real()
 
1488
        return self._real_repository.get_inventory_xml(revision_id)
 
1489
 
 
1490
    def deserialise_inventory(self, revision_id, xml):
 
1491
        self._ensure_real()
 
1492
        return self._real_repository.deserialise_inventory(revision_id, xml)
1503
1493
 
1504
1494
    def reconcile(self, other=None, thorough=False):
1505
1495
        self._ensure_real()
2833
2823
        raise NoSuchRevision(find('branch'), err.error_args[0])
2834
2824
    elif err.error_verb == 'nosuchrevision':
2835
2825
        raise NoSuchRevision(find('repository'), err.error_args[0])
2836
 
    elif err.error_verb == 'nobranch':
2837
 
        if len(err.error_args) >= 1:
2838
 
            extra = err.error_args[0]
2839
 
        else:
2840
 
            extra = None
2841
 
        raise errors.NotBranchError(path=find('bzrdir').root_transport.base,
2842
 
            detail=extra)
 
2826
    elif err.error_tuple == ('nobranch',):
 
2827
        raise errors.NotBranchError(path=find('bzrdir').root_transport.base)
2843
2828
    elif err.error_verb == 'norepository':
2844
2829
        raise errors.NoRepositoryPresent(find('bzrdir'))
2845
2830
    elif err.error_verb == 'LockContention':