/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/transport/local.py

  • Committer: John Arbash Meinel
  • Date: 2011-08-18 13:27:18 UTC
  • mto: (6015.9.14 2.4)
  • mto: This revision was merged to the branch mainline in revision 6090.
  • Revision ID: john@arbash-meinel.com-20110818132718-b4rrujubsaa3evuz
Add a __repr__ to _LazyListJoin to make it easier to debug.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
20
20
"""
21
21
 
22
22
import os
23
 
from stat import ST_MODE, S_ISDIR, ST_SIZE, S_IMODE
 
23
from stat import ST_MODE, S_ISDIR, S_IMODE
24
24
import sys
25
25
 
26
26
from bzrlib.lazy_import import lazy_import
33
33
    osutils,
34
34
    urlutils,
35
35
    symbol_versioning,
36
 
    transport,
37
36
    )
38
 
from bzrlib.trace import mutter
39
37
from bzrlib.transport import LateReadError
40
38
""")
41
39
 
99
97
         - relative_reference is url escaped.
100
98
        """
101
99
        if relative_reference in ('.', ''):
102
 
            return self._local_base
 
100
            # _local_base normally has a trailing slash; strip it so that stat
 
101
            # on a transport pointing to a symlink reads the link not the
 
102
            # referent but be careful of / and c:\
 
103
            return osutils.split(self._local_base)[0]
103
104
        return self._local_base + urlutils.unescape(relative_reference)
104
105
 
105
106
    def abspath(self, relpath):
326
327
 
327
328
    def open_write_stream(self, relpath, mode=None):
328
329
        """See Transport.open_write_stream."""
329
 
        # initialise the file
330
 
        self.put_bytes_non_atomic(relpath, "", mode=mode)
331
330
        abspath = self._abspath(relpath)
332
331
        handle = osutils.open_file(abspath, 'wb')
 
332
        handle.truncate()
333
333
        if mode is not None:
334
334
            self._check_mode_and_size(abspath, handle.fileno(), mode)
335
335
        transport._file_streams[self.abspath(relpath)] = handle
403
403
        try:
404
404
            # *don't* call bzrlib.osutils.rename, because we want to
405
405
            # detect conflicting names on rename, and osutils.rename tries to
406
 
            # mask cross-platform differences there; however we do update the
407
 
            # exception to include the filenames
 
406
            # mask cross-platform differences there
408
407
            os.rename(path_from, path_to)
409
408
        except (IOError, OSError),e:
410
409
            # TODO: What about path_to?
411
 
            self._translate_error(
412
 
                osutils._add_rename_error_details(e, path_from, path_to),
413
 
                path_from)
 
410
            self._translate_error(e, path_from)
414
411
 
415
412
    def move(self, rel_from, rel_to):
416
413
        """Move the item at rel_from to the location at rel_to"""