~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/sftp.py

merge from integration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
605
605
        # that we have taken the lock.
606
606
        return SFTPLock(relpath, self)
607
607
 
608
 
 
609
608
    def _unparse_url(self, path=None):
610
609
        if path is None:
611
610
            path = self._path
612
611
        path = urllib.quote(path)
613
 
        if path.startswith('/'):
614
 
            path = '/%2F' + path[1:]
615
 
        else:
616
 
            path = '/' + path
 
612
        # handle homedir paths
 
613
        if not path.startswith('/'):
 
614
            path = "/~/" + path
617
615
        netloc = urllib.quote(self._host)
618
616
        if self._username is not None:
619
617
            netloc = '%s@%s' % (urllib.quote(self._username), netloc)
653
651
        # as a homedir relative path (the path begins with a double slash
654
652
        # if it is absolute).
655
653
        # see draft-ietf-secsh-scp-sftp-ssh-uri-03.txt
656
 
        if path.startswith('/'):
657
 
            path = path[1:]
658
 
 
 
654
        # RBC 20060118 we are not using this as its too user hostile. instead
 
655
        # we are following lftp and using /~/foo to mean '~/foo'.
 
656
        # handle homedir paths
 
657
        if path.startswith('/~/'):
 
658
            path = path[3:]
 
659
        elif path == '/~':
 
660
            path = ''
659
661
        return (username, password, host, port, path)
660
662
 
661
663
    def _parse_url(self, url):
950
952
 
951
953
    def get_url(self):
952
954
        """See bzrlib.transport.Server.get_url."""
953
 
        return self._get_sftp_url("%%2f%s" % 
954
 
                urlescape(self._homedir[1:]))
 
955
        return self._get_sftp_url(urlescape(self._homedir[1:]))
955
956
 
956
957
 
957
958
class SFTPHomeDirServer(SFTPServer):
959
960
 
960
961
    def get_url(self):
961
962
        """See bzrlib.transport.Server.get_url."""
962
 
        return self._get_sftp_url("")
 
963
        return self._get_sftp_url("~/")
963
964
 
964
965
 
965
966
class SFTPSiblingAbsoluteServer(SFTPAbsoluteServer):