~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/remotebranch.py

  • Committer: Martin Pool
  • Date: 2005-09-16 03:32:44 UTC
  • mfrom: (1185.1.23)
  • mto: (1185.8.2) (974.1.91)
  • mto: This revision was merged to the branch mainline in revision 1390.
  • Revision ID: mbp@sourcefrog.net-20050916033244-18c4f4bcba663e42
- merge in many integration fixes from Robert

  * xml escaping of unprintable characters

  * 'make clean'

  * new, more consistent Branch constructors 

  * RemoteBranch tests against local farmework

  * scott's non-verbose commit fix 

This seems to break this usage though 

  bzr diff -r 1207..1208 ../bzr.robertc-integration

robertc@robertcollins.net-20050915175953-a16fdc627ce7c541

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
 
112
110
        
113
111
 
114
112
 
115
 
class RemoteBranch(Branch):
 
113
class RemoteBranch(LocalBranch):
116
114
    def __init__(self, baseurl, find_root=True):
117
115
        """Create new proxy for a remote branch."""
118
116
        if find_root:
119
 
            self.baseurl = _find_remote_root(baseurl)
 
117
            self.base = _find_remote_root(baseurl)
120
118
        else:
121
 
            self.baseurl = baseurl
 
119
            self.base = baseurl
122
120
            self._check_format()
123
121
 
124
122
        self.inventory_store = RemoteStore(baseurl + '/.bzr/inventory-store/')
131
129
 
132
130
    __repr__ = __str__
133
131
 
 
132
    def setup_caching(self, cache_root):
 
133
        """Set up cached stores located under cache_root"""
 
134
        from bzrlib.meta_store import CachedStore
 
135
        for store_name in ('inventory_store', 'text_store', 'revision_store'):
 
136
            if not isinstance(getattr(self, store_name), CachedStore):
 
137
                cache_path = os.path.join(cache_root, store_name)
 
138
                os.mkdir(cache_path)
 
139
                new_store = CachedStore(getattr(self, store_name), cache_path)
 
140
                setattr(self, store_name, new_store)
 
141
 
134
142
    def controlfile(self, filename, mode):
135
143
        if mode not in ('rb', 'rt', 'r'):
136
144
            raise BzrError("file mode %r not supported for remote branches" % mode)
137
 
        return get_url(self.baseurl + '/.bzr/' + filename, False)
 
145
        return get_url(self.base + '/.bzr/' + filename, False)
138
146
 
139
147
 
140
148
    def lock_read(self):
144
152
    def lock_write(self):
145
153
        from errors import LockError
146
154
        raise LockError("write lock not supported for remote branch %s"
147
 
                        % self.baseurl)
 
155
                        % self.base)
148
156
 
149
157
    def unlock(self):
150
158
        pass
151
159
    
152
160
 
153
161
    def relpath(self, path):
154
 
        if not path.startswith(self.baseurl):
 
162
        if not path.startswith(self.base):
155
163
            raise BzrError('path %r is not under base URL %r'
156
 
                           % (path, self.baseurl))
157
 
        pl = len(self.baseurl)
 
164
                           % (path, self.base))
 
165
        pl = len(self.base)
158
166
        return path[pl:].lstrip('/')
159
167
 
160
168