/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/remote.py

  • Committer: Martin von Gagern
  • Date: 2010-05-25 11:34:35 UTC
  • mto: This revision was merged to the branch mainline in revision 5273.
  • Revision ID: martin.vgagern@gmx.net-20100525113435-nfut18a2pvresya4
Drop outdated shell completion for zsh.

The new README file in the corresponding directory suggests some
alternatives, first and foremost the one shipped with zsh.

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
    static_tuple,
34
34
    symbol_versioning,
35
35
)
36
 
from bzrlib.branch import BranchReferenceFormat
 
36
from bzrlib.branch import BranchReferenceFormat, BranchWriteLockResult
37
37
from bzrlib.bzrdir import BzrDir, RemoteBzrDirFormat
38
38
from bzrlib.decorators import needs_read_lock, needs_write_lock, only_raises
39
39
from bzrlib.errors import (
43
43
from bzrlib.lockable_files import LockableFiles
44
44
from bzrlib.smart import client, vfs, repository as smart_repo
45
45
from bzrlib.revision import ensure_null, NULL_REVISION
 
46
from bzrlib.repository import RepositoryWriteLockResult
46
47
from bzrlib.trace import mutter, note, warning
47
48
 
48
49
 
272
273
    def create_workingtree(self, revision_id=None, from_branch=None):
273
274
        raise errors.NotLocalUrl(self.transport.base)
274
275
 
275
 
    def find_branch_format(self):
 
276
    def find_branch_format(self, name=None):
276
277
        """Find the branch 'format' for this bzrdir.
277
278
 
278
279
        This might be a synthetic object for e.g. RemoteBranch and SVN.
279
280
        """
280
 
        b = self.open_branch()
 
281
        b = self.open_branch(name=name)
281
282
        return b._format
282
283
 
283
 
    def get_branch_reference(self):
 
284
    def get_branch_reference(self, name=None):
284
285
        """See BzrDir.get_branch_reference()."""
 
286
        if name is not None:
 
287
            # XXX JRV20100304: Support opening colocated branches
 
288
            raise errors.NoColocatedBranchSupport(self)
285
289
        response = self._get_branch_reference()
286
290
        if response[0] == 'ref':
287
291
            return response[1]
318
322
            raise errors.UnexpectedSmartServerResponse(response)
319
323
        return response
320
324
 
321
 
    def _get_tree_branch(self):
 
325
    def _get_tree_branch(self, name=None):
322
326
        """See BzrDir._get_tree_branch()."""
323
 
        return None, self.open_branch()
 
327
        return None, self.open_branch(name=name)
324
328
 
325
329
    def open_branch(self, name=None, unsupported=False,
326
330
                    ignore_fallbacks=False):
997
1001
        pass
998
1002
 
999
1003
    def lock_read(self):
 
1004
        """Lock the repository for read operations.
 
1005
 
 
1006
        :return: A bzrlib.lock.LogicalLockResult.
 
1007
        """
1000
1008
        # wrong eventually - want a local lock cache context
1001
1009
        if not self._lock_mode:
1002
1010
            self._note_lock('r')
1009
1017
                repo.lock_read()
1010
1018
        else:
1011
1019
            self._lock_count += 1
 
1020
        return lock.LogicalLockResult(self.unlock)
1012
1021
 
1013
1022
    def _remote_lock_write(self, token):
1014
1023
        path = self.bzrdir._path_for_remote_call(self._client)
1054
1063
            raise errors.ReadOnlyError(self)
1055
1064
        else:
1056
1065
            self._lock_count += 1
1057
 
        return self._lock_token or None
 
1066
        return RepositoryWriteLockResult(self.unlock, self._lock_token or None)
1058
1067
 
1059
1068
    def leave_lock_in_place(self):
1060
1069
        if not self._lock_token:
1306
1315
        return self._real_repository.make_working_trees()
1307
1316
 
1308
1317
    def refresh_data(self):
1309
 
        """Re-read any data needed to to synchronise with disk.
 
1318
        """Re-read any data needed to synchronise with disk.
1310
1319
 
1311
1320
        This method is intended to be called after another repository instance
1312
1321
        (such as one used by a smart server) has inserted data into the
1313
 
        repository. It may not be called during a write group, but may be
1314
 
        called at any other time.
 
1322
        repository. On all repositories this will work outside of write groups.
 
1323
        Some repository formats (pack and newer for bzrlib native formats)
 
1324
        support refresh_data inside write groups. If called inside a write
 
1325
        group on a repository that does not support refreshing in a write group
 
1326
        IsInWriteGroupError will be raised.
1315
1327
        """
1316
 
        if self.is_in_write_group():
1317
 
            raise errors.InternalBzrError(
1318
 
                "May not refresh_data while in a write group.")
1319
1328
        if self._real_repository is not None:
1320
1329
            self._real_repository.refresh_data()
1321
1330
 
2387
2396
            self._vfs_set_tags_bytes(bytes)
2388
2397
 
2389
2398
    def lock_read(self):
 
2399
        """Lock the branch for read operations.
 
2400
 
 
2401
        :return: A bzrlib.lock.LogicalLockResult.
 
2402
        """
2390
2403
        self.repository.lock_read()
2391
2404
        if not self._lock_mode:
2392
2405
            self._note_lock('r')
2396
2409
                self._real_branch.lock_read()
2397
2410
        else:
2398
2411
            self._lock_count += 1
 
2412
        return lock.LogicalLockResult(self.unlock)
2399
2413
 
2400
2414
    def _remote_lock_write(self, token):
2401
2415
        if token is None:
2402
2416
            branch_token = repo_token = ''
2403
2417
        else:
2404
2418
            branch_token = token
2405
 
            repo_token = self.repository.lock_write()
 
2419
            repo_token = self.repository.lock_write().repository_token
2406
2420
            self.repository.unlock()
2407
2421
        err_context = {'token': token}
2408
2422
        response = self._call(
2445
2459
            self._lock_count += 1
2446
2460
            # Re-lock the repository too.
2447
2461
            self.repository.lock_write(self._repo_lock_token)
2448
 
        return self._lock_token or None
 
2462
        return BranchWriteLockResult(self.unlock, self._lock_token or None)
2449
2463
 
2450
2464
    def _unlock(self, branch_token, repo_token):
2451
2465
        err_context = {'token': str((branch_token, repo_token))}
2774
2788
        medium = self._branch._client._medium
2775
2789
        if medium._is_remote_before((1, 14)):
2776
2790
            return self._vfs_set_option(value, name, section)
 
2791
        if isinstance(value, dict):
 
2792
            if medium._is_remote_before((2, 2)):
 
2793
                return self._vfs_set_option(value, name, section)
 
2794
            return self._set_config_option_dict(value, name, section)
 
2795
        else:
 
2796
            return self._set_config_option(value, name, section)
 
2797
 
 
2798
    def _set_config_option(self, value, name, section):
2777
2799
        try:
2778
2800
            path = self._branch._remote_path()
2779
2801
            response = self._branch._client.call('Branch.set_config_option',
2780
2802
                path, self._branch._lock_token, self._branch._repo_lock_token,
2781
2803
                value.encode('utf8'), name, section or '')
2782
2804
        except errors.UnknownSmartMethod:
 
2805
            medium = self._branch._client._medium
2783
2806
            medium._remember_remote_is_before((1, 14))
2784
2807
            return self._vfs_set_option(value, name, section)
2785
2808
        if response != ():
2786
2809
            raise errors.UnexpectedSmartServerResponse(response)
2787
2810
 
 
2811
    def _serialize_option_dict(self, option_dict):
 
2812
        utf8_dict = {}
 
2813
        for key, value in option_dict.items():
 
2814
            if isinstance(key, unicode):
 
2815
                key = key.encode('utf8')
 
2816
            if isinstance(value, unicode):
 
2817
                value = value.encode('utf8')
 
2818
            utf8_dict[key] = value
 
2819
        return bencode.bencode(utf8_dict)
 
2820
 
 
2821
    def _set_config_option_dict(self, value, name, section):
 
2822
        try:
 
2823
            path = self._branch._remote_path()
 
2824
            serialised_dict = self._serialize_option_dict(value)
 
2825
            response = self._branch._client.call(
 
2826
                'Branch.set_config_option_dict',
 
2827
                path, self._branch._lock_token, self._branch._repo_lock_token,
 
2828
                serialised_dict, name, section or '')
 
2829
        except errors.UnknownSmartMethod:
 
2830
            medium = self._branch._client._medium
 
2831
            medium._remember_remote_is_before((2, 2))
 
2832
            return self._vfs_set_option(value, name, section)
 
2833
        if response != ():
 
2834
            raise errors.UnexpectedSmartServerResponse(response)
 
2835
 
2788
2836
    def _real_object(self):
2789
2837
        self._branch._ensure_real()
2790
2838
        return self._branch._real_branch