~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/__init__.py

  • Committer: Martin Pool
  • Date: 2010-04-01 04:41:18 UTC
  • mto: This revision was merged to the branch mainline in revision 5128.
  • Revision ID: mbp@sourcefrog.net-20100401044118-shyctqc02ob08ngz
ignore .testrepository

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
""")
48
48
 
49
49
from bzrlib.symbol_versioning import (
 
50
        deprecated_method,
 
51
        deprecated_function,
50
52
        DEPRECATED_PARAMETER,
51
53
        )
52
54
from bzrlib.trace import (
537
539
 
538
540
        This function will only be defined for Transports which have a
539
541
        physical local filesystem representation.
540
 
 
541
 
        :raises errors.NotLocalUrl: When no local path representation is
542
 
            available.
543
542
        """
544
543
        raise errors.NotLocalUrl(self.abspath(relpath))
545
544
 
1066
1065
        # use mask to ensure that bits other than rwx are ignored.
1067
1066
        stat = self.stat(from_relpath)
1068
1067
        target.mkdir('.', stat.st_mode & 0777)
 
1068
 
1069
1069
        source.copy_tree_to_transport(target)
1070
1070
 
1071
1071
    def copy_tree_to_transport(self, to_transport):
1286
1286
        # should be asked to ConnectedTransport only.
1287
1287
        return None
1288
1288
 
1289
 
    def disconnect(self):
1290
 
        # This is really needed for ConnectedTransport only, but it's easier to
1291
 
        # have Transport do nothing than testing that the disconnect should be
1292
 
        # asked to ConnectedTransport only.
1293
 
        pass
1294
 
 
1295
1289
    def _redirected_to(self, source, target):
1296
1290
        """Returns a transport suitable to re-issue a redirected request.
1297
1291
 
1556
1550
            transport = self.__class__(other_base, _from_transport=self)
1557
1551
        return transport
1558
1552
 
1559
 
    def disconnect(self):
1560
 
        """Disconnect the transport.
1561
 
 
1562
 
        If and when required the transport willl reconnect automatically.
1563
 
        """
1564
 
        raise NotImplementedError(self.disconnect)
1565
 
 
 
1553
 
 
1554
# We try to recognize an url lazily (ignoring user, password, etc)
 
1555
_urlRE = re.compile(r'^(?P<proto>[^:/\\]+)://(?P<rest>.*)$')
1566
1556
 
1567
1557
def get_transport(base, possible_transports=None):
1568
1558
    """Open a transport to access a URL or directory.
1582
1572
    base = directories.dereference(base)
1583
1573
 
1584
1574
    def convert_path_to_url(base, error_str):
1585
 
        if urlutils.is_url(base):
 
1575
        m = _urlRE.match(base)
 
1576
        if m:
1586
1577
            # This looks like a URL, but we weren't able to
1587
1578
            # instantiate it as such raise an appropriate error
1588
1579
            # FIXME: we have a 'error_str' unused and we use last_err below
1749
1740
register_lazy_transport('ftp://', 'bzrlib.transport.ftp', 'FtpTransport')
1750
1741
register_transport_proto('aftp://', help="Access using active FTP.")
1751
1742
register_lazy_transport('aftp://', 'bzrlib.transport.ftp', 'FtpTransport')
1752
 
register_transport_proto('gio+', help="Access using any GIO supported protocols.")
1753
 
register_lazy_transport('gio+', 'bzrlib.transport.gio_transport', 'GioTransport')
1754
 
 
1755
 
 
1756
 
# Default to trying GSSAPI authentication (if the kerberos module is
1757
 
# available)
1758
 
register_transport_proto('ftp+gssapi://', register_netloc=True)
1759
 
register_transport_proto('aftp+gssapi://', register_netloc=True)
1760
 
register_transport_proto('ftp+nogssapi://', register_netloc=True)
1761
 
register_transport_proto('aftp+nogssapi://', register_netloc=True)
1762
 
register_lazy_transport('ftp+gssapi://', 'bzrlib.transport.ftp._gssapi',
1763
 
                        'GSSAPIFtpTransport')
1764
 
register_lazy_transport('aftp+gssapi://', 'bzrlib.transport.ftp._gssapi',
1765
 
                        'GSSAPIFtpTransport')
1766
 
register_lazy_transport('ftp://', 'bzrlib.transport.ftp._gssapi',
1767
 
                        'GSSAPIFtpTransport')
1768
 
register_lazy_transport('aftp://', 'bzrlib.transport.ftp._gssapi',
1769
 
                        'GSSAPIFtpTransport')
1770
 
register_lazy_transport('ftp+nogssapi://', 'bzrlib.transport.ftp',
1771
 
                        'FtpTransport')
1772
 
register_lazy_transport('aftp+nogssapi://', 'bzrlib.transport.ftp',
1773
 
                        'FtpTransport')
 
1743
 
 
1744
try:
 
1745
    import kerberos
 
1746
    kerberos_available = True
 
1747
except ImportError:
 
1748
    kerberos_available = False
 
1749
 
 
1750
if kerberos_available:
 
1751
    # Default to trying GSSAPI authentication (if the kerberos module is
 
1752
    # available)
 
1753
    register_transport_proto('ftp+gssapi://', register_netloc=True)
 
1754
    register_lazy_transport('ftp+gssapi://', 'bzrlib.transport.ftp._gssapi',
 
1755
                            'GSSAPIFtpTransport')
 
1756
    register_transport_proto('aftp+gssapi://', register_netloc=True)
 
1757
    register_lazy_transport('aftp+gssapi://', 'bzrlib.transport.ftp._gssapi',
 
1758
                            'GSSAPIFtpTransport')
 
1759
    register_transport_proto('ftp+nogssapi://', register_netloc=True)
 
1760
    register_transport_proto('aftp+nogssapi://', register_netloc=True)
 
1761
 
 
1762
    register_lazy_transport('ftp://', 'bzrlib.transport.ftp._gssapi',
 
1763
                            'GSSAPIFtpTransport')
 
1764
    register_lazy_transport('aftp://', 'bzrlib.transport.ftp._gssapi',
 
1765
                            'GSSAPIFtpTransport')
 
1766
    register_lazy_transport('ftp+nogssapi://', 'bzrlib.transport.ftp',
 
1767
                            'FtpTransport')
 
1768
    register_lazy_transport('aftp+nogssapi://', 'bzrlib.transport.ftp',
 
1769
                            'FtpTransport')
1774
1770
 
1775
1771
register_transport_proto('memory://')
1776
1772
register_lazy_transport('memory://', 'bzrlib.transport.memory',