~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/remotebranch.py

  • Committer: Robert Collins
  • Date: 2005-09-28 05:37:53 UTC
  • mfrom: (1092.3.4)
  • mto: This revision was merged to the branch mainline in revision 1397.
  • Revision ID: robertc@robertcollins.net-20050928053753-68e6e4c0642eccea
merge from symlink branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /usr/bin/env python
2
 
 
3
1
# Copyright (C) 2005 Canonical Ltd
4
2
 
5
3
# This program is free software; you can redistribute it and/or modify
31
29
import urlparse
32
30
 
33
31
from bzrlib.errors import BzrError, BzrCheckError
34
 
from bzrlib.branch import Branch, BZR_BRANCH_FORMAT
 
32
from bzrlib.branch import Branch, LocalBranch, BZR_BRANCH_FORMAT
35
33
from bzrlib.trace import mutter
36
34
from bzrlib.xml import serializer_v4
37
35
 
78
76
            return url_f
79
77
 
80
78
 
81
 
 
82
79
def _find_remote_root(url):
83
80
    """Return the prefix URL that corresponds to the branch root."""
84
81
    orig_url = url
111
108
        url = urlparse.urlunparse((scheme, host, path, '', '', ''))
112
109
        
113
110
 
114
 
class RemoteBranch(Branch):
 
111
 
 
112
class RemoteBranch(LocalBranch):
115
113
 
116
114
    def __init__(self, baseurl, find_root=True):
117
115
        """Create new proxy for a remote branch."""
118
116
        # circular import protection
119
117
        from bzrlib.store import RemoteStore
120
118
        if find_root:
121
 
            self.baseurl = _find_remote_root(baseurl)
 
119
            self.base = _find_remote_root(baseurl)
122
120
        else:
123
 
            self.baseurl = baseurl
 
121
            self.base = baseurl
124
122
            self._check_format()
125
123
        self.inventory_store = RemoteStore(baseurl + '/.bzr/inventory-store/')
126
124
        self.text_store = RemoteStore(baseurl + '/.bzr/text-store/')
132
130
 
133
131
    __repr__ = __str__
134
132
 
 
133
    def setup_caching(self, cache_root):
 
134
        """Set up cached stores located under cache_root"""
 
135
        from bzrlib.meta_store import CachedStore
 
136
        for store_name in ('inventory_store', 'text_store', 'revision_store'):
 
137
            if not isinstance(getattr(self, store_name), CachedStore):
 
138
                cache_path = os.path.join(cache_root, store_name)
 
139
                os.mkdir(cache_path)
 
140
                new_store = CachedStore(getattr(self, store_name), cache_path)
 
141
                setattr(self, store_name, new_store)
 
142
 
135
143
    def controlfile(self, filename, mode):
136
144
        if mode not in ('rb', 'rt', 'r'):
137
145
            raise BzrError("file mode %r not supported for remote branches" % mode)
138
 
        return get_url(self.baseurl + '/.bzr/' + filename, False)
 
146
        return get_url(self.base + '/.bzr/' + filename, False)
139
147
 
140
148
 
141
149
    def lock_read(self):
145
153
    def lock_write(self):
146
154
        from errors import LockError
147
155
        raise LockError("write lock not supported for remote branch %s"
148
 
                        % self.baseurl)
 
156
                        % self.base)
149
157
 
150
158
    def unlock(self):
151
159
        pass
152
160
    
153
161
 
154
162
    def relpath(self, path):
155
 
        if not path.startswith(self.baseurl):
 
163
        if not path.startswith(self.base):
156
164
            raise BzrError('path %r is not under base URL %r'
157
 
                           % (path, self.baseurl))
158
 
        pl = len(self.baseurl)
 
165
                           % (path, self.base))
 
166
        pl = len(self.base)
159
167
        return path[pl:].lstrip('/')
160
168
 
161
169
 
170
178
                                % (revision_id, r.revision_id))
171
179
        return r
172
180
 
 
181