/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/__init__.py

  • Committer: Vincent Ladeuil
  • Date: 2007-11-19 13:44:25 UTC
  • mto: (3018.1.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 3019.
  • Revision ID: v.ladeuil+lp@free.fr-20071119134425-y74t0vh9ctpo8j9f
Fix 150860 by leaving port as user specified it.

* transport/remote.py:
(BZR_DEFAULT_INTERFACE, BZR_DEFAULT_PORT): Moved to
smart/medium.py.

* transport/__init__.py:
(TransportListRegistry.register_transport): Delete default_port.
(TransportListRegistry.get_default_port): Deleted.
(ConnectedTransport._split_url, ConnectedTransport._unsplit_url):
Leave port untouched.

* tests/test_transport.py: 
Transports kept port as user specified it.
(TestRemoteTCPTransport, SSHPortTestMixin, SFTPTransportPortTest,
BzrSSHTransportPortTest): Deleted. Default port is set just before
connection.

* smart/medium.py:
(SmartTCPClientMedium._ensure_connection): Set port to default
*just* before connection.

* builtins.py:
(cmd_serve.run): Get interface and port default values from medium.

Show diffs side-by-side

added added

removed removed

Lines of Context:
128
128
        self.get(key).insert(0,
129
129
                registry._LazyObjectGetter(module_name, member_name))
130
130
 
131
 
    def register_transport(self, key, help=None, default_port=None):
132
 
        self.register(key, [], help, default_port)
 
131
    def register_transport(self, key, help=None):
 
132
        self.register(key, [], help)
133
133
 
134
134
    def set_default_transport(self, key=None):
135
135
        """Return either 'key' or the default key if key is None"""
136
136
        self._default_key = key
137
137
 
138
 
    def get_default_port(self, scheme):
139
 
        """Return the registered default port for this protocol scheme."""
140
 
        try:
141
 
            return self.get_info(scheme + '://')
142
 
        except LookupError:
143
 
            return None
144
 
 
145
138
 
146
139
transport_list_registry = TransportListRegistry()
147
140
 
148
141
 
149
 
def register_transport_proto(prefix, help=None, info=None, default_port=None,
 
142
def register_transport_proto(prefix, help=None, info=None,
150
143
                             register_netloc=False):
151
 
    transport_list_registry.register_transport(prefix, help, default_port)
 
144
    transport_list_registry.register_transport(prefix, help)
152
145
    if register_netloc:
153
146
        assert prefix.endswith('://')
154
147
        register_urlparse_netloc_protocol(prefix[:-3])
1362
1355
        host = urllib.unquote(host)
1363
1356
        path = urllib.unquote(path)
1364
1357
 
1365
 
        if port is None:
1366
 
            # The port isn't explicitly specified, so return the default (if
1367
 
            # there is one).
1368
 
            port = transport_list_registry.get_default_port(scheme)
1369
1358
        return (scheme, user, password, host, port, path)
1370
1359
 
1371
1360
    @staticmethod
1396
1385
            # have one so that it doesn't get accidentally
1397
1386
            # exposed.
1398
1387
            netloc = '%s@%s' % (urllib.quote(user), netloc)
1399
 
        if (port is not None and 
1400
 
            port != transport_list_registry.get_default_port(scheme)):
1401
 
            # Include the port in the netloc (unless it's the same as the
1402
 
            # default, in which case we omit it as it is redundant).
 
1388
        if port is not None:
1403
1389
            netloc = '%s:%d' % (netloc, port)
1404
1390
        path = urllib.quote(path)
1405
1391
        return urlparse.urlunparse((scheme, netloc, path, None, None, None))
1456
1442
        """Get the object shared amongst cloned transports.
1457
1443
 
1458
1444
        This should be used only by classes that needs to extend the sharing
1459
 
        with other objects than tramsports.
 
1445
        with objects other than transports.
1460
1446
 
1461
1447
        Use _get_connection to get the connection itself.
1462
1448
        """
1721
1707
register_lazy_transport('file://', 'bzrlib.transport.local', 'LocalTransport')
1722
1708
transport_list_registry.set_default_transport("file://")
1723
1709
 
1724
 
# Note that sftp:// has no default_port, because the user's ~/.ssh/config
1725
 
# can set it to arbitrary values based on hostname.
1726
1710
register_transport_proto('sftp://',
1727
1711
            help="Access using SFTP (most SSH servers provide SFTP).",
1728
1712
            register_netloc=True)
1730
1714
# Decorated http transport
1731
1715
register_transport_proto('http+urllib://',
1732
1716
#                help="Read-only access of branches exported on the web."
1733
 
            default_port=80, register_netloc=True)
 
1717
                         register_netloc=True)
1734
1718
register_lazy_transport('http+urllib://', 'bzrlib.transport.http._urllib',
1735
1719
                        'HttpTransport_urllib')
1736
1720
register_transport_proto('https+urllib://',
1737
1721
#                help="Read-only access of branches exported on the web using SSL."
1738
 
            default_port=443, register_netloc=True)
 
1722
                         register_netloc=True)
1739
1723
register_lazy_transport('https+urllib://', 'bzrlib.transport.http._urllib',
1740
1724
                        'HttpTransport_urllib')
1741
1725
register_transport_proto('http+pycurl://',
1742
1726
#                help="Read-only access of branches exported on the web."
1743
 
            default_port=80, register_netloc=True)
 
1727
                         register_netloc=True)
1744
1728
register_lazy_transport('http+pycurl://', 'bzrlib.transport.http._pycurl',
1745
1729
                        'PyCurlTransport')
1746
1730
register_transport_proto('https+pycurl://',
1747
1731
#                help="Read-only access of branches exported on the web using SSL."
1748
 
            default_port=443, register_netloc=True)
 
1732
                         register_netloc=True)
1749
1733
register_lazy_transport('https+pycurl://', 'bzrlib.transport.http._pycurl',
1750
1734
                        'PyCurlTransport')
1751
1735
# Default http transports (last declared wins (if it can be imported))
1752
1736
register_transport_proto('http://',
1753
 
            help="Read-only access of branches exported on the web.",
1754
 
            default_port=80)
 
1737
                 help="Read-only access of branches exported on the web.")
1755
1738
register_transport_proto('https://',
1756
 
            help="Read-only access of branches exported on the web using SSL.",
1757
 
            default_port=443)
 
1739
            help="Read-only access of branches exported on the web using SSL.")
1758
1740
register_lazy_transport('http://', 'bzrlib.transport.http._urllib',
1759
1741
                        'HttpTransport_urllib')
1760
1742
register_lazy_transport('https://', 'bzrlib.transport.http._urllib',
1761
1743
                        'HttpTransport_urllib')
1762
 
register_lazy_transport('http://', 'bzrlib.transport.http._pycurl', 'PyCurlTransport')
1763
 
register_lazy_transport('https://', 'bzrlib.transport.http._pycurl', 'PyCurlTransport')
 
1744
register_lazy_transport('http://', 'bzrlib.transport.http._pycurl',
 
1745
                        'PyCurlTransport')
 
1746
register_lazy_transport('https://', 'bzrlib.transport.http._pycurl',
 
1747
                        'PyCurlTransport')
1764
1748
 
1765
 
register_transport_proto('ftp://',
1766
 
            help="Access using passive FTP.",
1767
 
            default_port=21)
 
1749
register_transport_proto('ftp://', help="Access using passive FTP.")
1768
1750
register_lazy_transport('ftp://', 'bzrlib.transport.ftp', 'FtpTransport')
1769
 
register_transport_proto('aftp://',
1770
 
            help="Access using active FTP.",
1771
 
            default_port=21)
 
1751
register_transport_proto('aftp://', help="Access using active FTP.")
1772
1752
register_lazy_transport('aftp://', 'bzrlib.transport.ftp', 'FtpTransport')
1773
1753
 
1774
1754
register_transport_proto('memory://')
1775
 
register_lazy_transport('memory://', 'bzrlib.transport.memory', 'MemoryTransport')
 
1755
register_lazy_transport('memory://', 'bzrlib.transport.memory',
 
1756
                        'MemoryTransport')
1776
1757
 
1777
1758
# chroots cannot be implicitly accessed, they must be explicitly created:
1778
1759
register_transport_proto('chroot+')
1780
1761
register_transport_proto('readonly+',
1781
1762
#              help="This modifier converts any transport to be readonly."
1782
1763
            )
1783
 
register_lazy_transport('readonly+', 'bzrlib.transport.readonly', 'ReadonlyTransportDecorator')
 
1764
register_lazy_transport('readonly+', 'bzrlib.transport.readonly',
 
1765
                        'ReadonlyTransportDecorator')
1784
1766
 
1785
1767
register_transport_proto('fakenfs+')
1786
 
register_lazy_transport('fakenfs+', 'bzrlib.transport.fakenfs', 'FakeNFSTransportDecorator')
 
1768
register_lazy_transport('fakenfs+', 'bzrlib.transport.fakenfs',
 
1769
                        'FakeNFSTransportDecorator')
1787
1770
 
1788
1771
register_transport_proto('trace+')
1789
 
register_lazy_transport('trace+', 'bzrlib.transport.trace', 'TransportTraceDecorator')
 
1772
register_lazy_transport('trace+', 'bzrlib.transport.trace',
 
1773
                        'TransportTraceDecorator')
1790
1774
 
1791
1775
register_transport_proto('unlistable+')
1792
 
register_lazy_transport('unlistable+', 'bzrlib.transport.unlistable', 'UnlistableTransportDecorator')
 
1776
register_lazy_transport('unlistable+', 'bzrlib.transport.unlistable',
 
1777
                        'UnlistableTransportDecorator')
1793
1778
 
1794
1779
register_transport_proto('brokenrename+')
1795
1780
register_lazy_transport('brokenrename+', 'bzrlib.transport.brokenrename',
1796
 
        'BrokenRenameTransportDecorator')
 
1781
                        'BrokenRenameTransportDecorator')
1797
1782
 
1798
1783
register_transport_proto('vfat+')
1799
1784
register_lazy_transport('vfat+',
1808
1793
 
1809
1794
register_transport_proto('bzr://',
1810
1795
            help="Fast access using the Bazaar smart server.",
1811
 
            default_port=4155, register_netloc=True)
 
1796
                         register_netloc=True)
1812
1797
 
1813
 
register_lazy_transport('bzr://',
1814
 
                        'bzrlib.transport.remote',
 
1798
register_lazy_transport('bzr://', 'bzrlib.transport.remote',
1815
1799
                        'RemoteTCPTransport')
1816
1800
register_transport_proto('bzr+http://',
1817
1801
#                help="Fast access using the Bazaar smart server over HTTP."
1818
 
            default_port=80, register_netloc=True)
1819
 
register_lazy_transport('bzr+http://',
1820
 
                        'bzrlib.transport.remote',
 
1802
                         register_netloc=True)
 
1803
register_lazy_transport('bzr+http://', 'bzrlib.transport.remote',
1821
1804
                        'RemoteHTTPTransport')
1822
1805
register_transport_proto('bzr+https://',
1823
1806
#                help="Fast access using the Bazaar smart server over HTTPS."
1824
 
             register_netloc=True)
 
1807
                         register_netloc=True)
1825
1808
register_lazy_transport('bzr+https://',
1826
1809
                        'bzrlib.transport.remote',
1827
1810
                        'RemoteHTTPTransport')
1828
 
# Note that bzr+ssh:// has no default_port, because the user's ~/.ssh/config
1829
 
# can set it to arbitrary values based on hostname.
1830
1811
register_transport_proto('bzr+ssh://',
1831
1812
            help="Fast access using the Bazaar smart server over SSH.",
1832
1813
            register_netloc=True)
1833
 
register_lazy_transport('bzr+ssh://',
1834
 
                        'bzrlib.transport.remote',
 
1814
register_lazy_transport('bzr+ssh://', 'bzrlib.transport.remote',
1835
1815
                        'RemoteSSHTransport')