15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
17
from cStringIO import StringIO
19
from bzrlib.lazy_import import lazy_import
20
lazy_import(globals(), """
20
from warnings import warn
23
from bzrlib.decorators import (needs_read_lock,
25
import bzrlib.errors as errors
26
from bzrlib.errors import BzrError
27
from bzrlib.osutils import file_iterator, safe_unicode
32
from bzrlib.decorators import (
28
36
from bzrlib.symbol_versioning import (
32
from bzrlib.trace import mutter, note
33
import bzrlib.transactions as transactions
34
import bzrlib.urlutils as urlutils
37
42
# XXX: The tracking here of lock counts and whether the lock is held is
140
147
self._dir_mode = (st.st_mode & 07777) | 00700
141
148
# Remove the sticky and execute bits for files
142
149
self._file_mode = self._dir_mode & ~07111
143
if not self._set_dir_mode:
144
self._dir_mode = None
145
if not self._set_file_mode:
146
self._file_mode = None
151
@deprecated_method(deprecated_in((1, 6, 0)))
148
152
def controlfilename(self, file_or_path):
149
"""Return location relative to branch."""
153
"""Return location relative to branch.
155
:deprecated: Use Transport methods instead.
150
157
return self._transport.abspath(self._escape(file_or_path))
160
@deprecated_method(deprecated_in((1, 5, 0)))
153
161
def get(self, relpath):
154
"""Get a file as a bytestream."""
162
"""Get a file as a bytestream.
164
:deprecated: Use a Transport instead of LockableFiles.
155
166
relpath = self._escape(relpath)
156
167
return self._transport.get(relpath)
159
170
@deprecated_method(deprecated_in((1, 5, 0)))
160
171
def get_utf8(self, relpath):
161
"""Get a file as a unicode stream."""
172
"""Get a file as a unicode stream.
174
:deprecated: Use a Transport instead of LockableFiles.
162
176
relpath = self._escape(relpath)
163
177
# DO NOT introduce an errors=replace here.
164
178
return codecs.getreader('utf-8')(self._transport.get(relpath))
166
180
@needs_write_lock
181
@deprecated_method(deprecated_in((1, 6, 0)))
167
182
def put(self, path, file):
170
185
:param path: The path to put the file, relative to the .bzr control
172
:param f: A file-like or string object whose contents should be copied.
187
:param file: A file-like or string object whose contents should be copied.
189
:deprecated: Use Transport methods instead.
174
191
self._transport.put_file(self._escape(path), file, mode=self._file_mode)
176
193
@needs_write_lock
194
@deprecated_method(deprecated_in((1, 6, 0)))
177
195
def put_bytes(self, path, a_string):
178
196
"""Write a string of bytes.
180
198
:param path: The path to put the bytes, relative to the transport root.
181
:param string: A string object, whose exact bytes are to be copied.
199
:param a_string: A string object, whose exact bytes are to be copied.
201
:deprecated: Use Transport methods instead.
183
203
self._transport.put_bytes(self._escape(path), a_string,
184
204
mode=self._file_mode)
186
206
@needs_write_lock
207
@deprecated_method(deprecated_in((1, 6, 0)))
187
208
def put_utf8(self, path, a_string):
188
209
"""Write a string, encoding as utf-8.
190
211
:param path: The path to put the string, relative to the transport root.
191
212
:param string: A string or unicode object whose contents should be copied.
214
:deprecated: Use Transport methods instead.
193
216
# IterableFile would not be needed if Transport.put took iterables
194
217
# instead of files. ADHB 2005-12-25