pip install -e svn + ssh不带用户

时间:2018-05-04 16:17:49

标签: svn pip

如果我这样做:

svn co svn+ssh://svn@10.210.1.24/cidb/V1/trunk/config cidb_config_pipenv

它有效,但如果我这样做:

pip install -e svn+ssh://svn@10.210.1.24/cidb/V1/trunk/config#egg=cidb_config_pipenv

Obtaining cidb_config_pipenv from svn+ssh://svn@10.210.1.24/cidb/V1/trunk/config#egg=cidb_config_pipenv

它删除了' svn @' :

Checking out svn+ssh://10.210.1.24/cidb/V1/trunk/config to /root/.virtualenvs/root-PB1MQnVC/src/cidb-config-pipenv

所以它试图用另一个用户登录svn服务器而不是' svn'它失败了。

在pip文档中,我看到可以使用svn + ssh但是没有例子:我是否有正确的语法来指定用于登录svn服务器的用户?

编辑:我找到的唯一解决方案是在〜/ .subversion / config中强制SSH隧道定义中的用户名:

[tunnels]
ssh = ssh -l svn

这真的很丑,但确实有效。

2 个答案:

答案 0 :(得分:2)

当进入详细模式时,可以看到pip正在使用--username调用svn checkout。但那是SVN,它不是工作。

svn checkout --username myuser svn+ssh://host/path

不起作用(至少在ubuntu和centos上):帐户中没有使用用户名。 SVN只接受:

svn checkout svn+ssh://myuser@host/path

我发现黑客攻击:使用'%40'而不是'@',因此pip不会检测网址中的用户名,也不会使用--username选项调用svn。 所以我现在可以做到:

pip -e svn+ssh://myuser%40host/path#egg=myproject

这很难看,可能是我要为pip和/或svn打开一个问题......

答案 1 :(得分:1)

svn+ssh使用不同的(ssh) authentication,因此正常的--username身份验证无效。为避免pip--username传递给svn,您必须避免在网址中svn@。要传递正确的ssh密钥,您必须重新定义ssh命令。类似的东西(提供真实密钥的路径):

SVN_SSH="ssh -i $HOME/.ssh/id_dsa.svn"

在你的情况下可能是

SVN_SSH="ssh -l svn"
export SVN_SSH

验证它是否有效:

svn co svn+ssh://10.210.1.24/cidb/V1/trunk/config cidb_config_pipenv

运行pip:

pip install -e svn+ssh://10.210.1.24/cidb/V1/trunk/config#egg=cidb_config_pipenv