~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/remotebranch.py

  • Committer: Robert Collins
  • Date: 2005-08-25 06:20:21 UTC
  • mto: (974.1.50) (1185.1.10) (1092.3.1)
  • mto: This revision was merged to the branch mainline in revision 1139.
  • Revision ID: robertc@robertcollins.net-20050825062021-d7d1b19582ceb297
should run tests before committing, tsk. move an import to fix

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
 
27
27
import gzip
28
28
from cStringIO import StringIO
29
 
import os
30
29
import urllib2
31
30
 
32
 
from bzrlib.errors import BzrError, BzrCheckError
33
 
from bzrlib.branch import Branch, BZR_BRANCH_FORMAT
34
 
from bzrlib.trace import mutter
35
 
from bzrlib.xml import serializer_v4
36
 
 
37
 
 
38
 
ENABLE_URLGRABBER = False
39
 
 
40
 
from bzrlib.errors import BzrError, NoSuchRevision
 
31
from errors import BzrError, BzrCheckError
 
32
from branch import Branch, BZR_BRANCH_FORMAT
 
33
from trace import mutter
 
34
 
 
35
# velocitynet.com.au transparently proxies connections and thereby
 
36
# breaks keep-alive -- sucks!
 
37
 
 
38
 
 
39
ENABLE_URLGRABBER = True
 
40
 
 
41
from bzrlib.errors import BzrError
41
42
 
42
43
class GetFailed(BzrError):
43
44
    def __init__(self, url, status):
103
104
            raise BzrError('no branch root found for URL %s' % orig_url)
104
105
 
105
106
        url = url[:idx]        
 
107
        
106
108
 
107
109
 
108
110
class RemoteBranch(Branch):
109
111
    def __init__(self, baseurl, find_root=True):
110
112
        """Create new proxy for a remote branch."""
111
113
        if find_root:
112
 
            self.base = _find_remote_root(baseurl)
 
114
            self.baseurl = _find_remote_root(baseurl)
113
115
        else:
114
 
            self.base = baseurl
 
116
            self.baseurl = baseurl
115
117
            self._check_format()
116
118
 
117
119
        self.inventory_store = RemoteStore(baseurl + '/.bzr/inventory-store/')
127
129
    def controlfile(self, filename, mode):
128
130
        if mode not in ('rb', 'rt', 'r'):
129
131
            raise BzrError("file mode %r not supported for remote branches" % mode)
130
 
        return get_url(self.base + '/.bzr/' + filename, False)
 
132
        return get_url(self.baseurl + '/.bzr/' + filename, False)
131
133
 
132
134
 
133
135
    def lock_read(self):
137
139
    def lock_write(self):
138
140
        from errors import LockError
139
141
        raise LockError("write lock not supported for remote branch %s"
140
 
                        % self.base)
 
142
                        % self.baseurl)
141
143
 
142
144
    def unlock(self):
143
145
        pass
144
146
    
145
147
 
146
148
    def relpath(self, path):
147
 
        if not path.startswith(self.base):
 
149
        if not path.startswith(self.baseurl):
148
150
            raise BzrError('path %r is not under base URL %r'
149
 
                           % (path, self.base))
150
 
        pl = len(self.base)
 
151
                           % (path, self.baseurl))
 
152
        pl = len(self.baseurl)
151
153
        return path[pl:].lstrip('/')
152
154
 
153
155
 
154
156
    def get_revision(self, revision_id):
155
 
        try:
156
 
            revf = self.revision_store[revision_id]
157
 
        except KeyError:
158
 
            raise NoSuchRevision(self, revision_id)
159
 
        r = serializer_v4.read_revision(revf)
 
157
        from bzrlib.revision import Revision
 
158
        from bzrlib.xml import unpack_xml
 
159
        revf = self.revision_store[revision_id]
 
160
        r = unpack_xml(Revision, revf)
160
161
        if r.revision_id != revision_id:
161
162
            raise BzrCheckError('revision stored as {%s} actually contains {%s}'
162
163
                                % (revision_id, r.revision_id))