如何从命令行使用 svn+ssh 和 Tortoise SVN

Posted

技术标签:

【中文标题】如何从命令行使用 svn+ssh 和 Tortoise SVN【英文标题】:How to use svn+ssh with Tortoise SVN from the command line 【发布时间】:2013-04-19 07:28:21 【问题描述】:

我在使用 TortoiseSvn 的 Windows 7 工作站上尝试使用以下语法签出 repo 时遇到问题:

svn co svn+ssh://user@ip/repo .

我做了什么来测试这个问题:

修改TortoiseSvn的网络设置指向..\TortoisePlink.exe 成功建立到目标计算机的 ssh 连接,没有任何问题 已从运行带有 OpenSsh 的 Ubuntu 的工作站成功签出存储库

当我尝试从 Windows 7 工作站上的命令行执行上述语法时,我收到错误:

svn: E720087: Unable to connect to a repository at URL 'svn+ssh:///user@ip/repo'
svn: E720087: Can't create tunnel:The parameter is incorrect.

有趣的是,如果我使用 tortoise gui 浏览到 repo,我可以成功打开并查看 repo。但出于脚本目的,我需要从命令行执行此操作。

有什么建议吗?

【问题讨论】:

【参考方案1】:

我有一个类似但略有不同的问题。

我尝试通过 Pycharm 连接到我们的 SSH+SVN 服务器,但它挂了。通过Windows右键单击,tortoiseSVN尝试了常规方式,并得到了同样的“无法创建隧道”问题。

我相信这个问题是因为我尝试通过 pycharm 连接到我的 repo,它自动在 tortoise SVN 配置文件中创建了一条隧道线。

我按照凯文萨德勒的回答,但只是注释掉了 ssh 行,它就恢复了正常。签出和提交又开始工作了。

凯文的回答:

检查 TortoisePlink 的路径是否在您的 Tortoise SVN 配置中没有损坏...

    开始 > 程序文件 > Tortoise SVN > 设置 在常规设置下,“Subversion 配置文件:”点击“编辑” 这将在记事本中打开配置文件 向下滚动到 [隧道] 部分。注释掉 SSH 行。

【讨论】:

【参考方案2】:

检查 TortoisePlink 的路径是否在您的 Tortoise SVN 配置中没有损坏...

    开始 > 程序文件 > Tortoise SVN > 设置 在常规设置下,“Subversion 配置文件:”点击“编辑” 这将在记事本中打开配置文件 向下滚动到[tunnels] 部分并检查应该取消注释的ssh 的值,使用双斜杠等 - 我遇到了问题,因为路径的开头似乎有一个 Unicode 控制代码。李>
### 在 Windows 上,如果要指定命令的完整路径, ### 使用正斜杠 (/) 或成对的反斜杠 (\\) 作为 ### 路径分隔符。单个反斜杠将被视为 ### 为以下字符转义。 ssh = C\:\\Program Files\\TortoiseSVN\\bin\\TortoisePlink.exe

【讨论】:

我这样做了,但我无法再访问 SVN :(【参考方案3】:

要使 svn+ssh 与 Tortoise 一起工作,请确保将 %SVN_SSH% 设置为您的 ssh 客户端(可能是来自 Tortoise 或 Putty 的 plink.exe),并且路径必须使用正斜杠 / 或转义的反斜杠编写\\.

尝试将%SVN_SSH% 设置为plink 的绝对路径,同时转义反斜杠,例如C:\\Program Files\\TortoiseSVN\\bin\\TortoisePlink.exe 而不是..\TortoisePlink.exe

【讨论】:

我确认这对我有用。尽管如此,使用正常路径却无法正常工作是非常愚蠢的。 谢谢! svn+sshphpStorm 中为我打破了升级到 svn 1.8。 %SVN_SSH% 中的双斜杠在 Win 10 上为我解决了问题。现在使用从 cli 和 phpstorm 加载的腻子键。【参考方案4】:

事实证明,配置文件的 Tunnels 部分中的行是区分大小写的。

例如: sh = $SVN_SSH "C:/path/putty/plink.exe" -2 -C -i "C:/path/username/serversvn.ppk" 可能会工作

sh = $SVN_SSH "C:/path/PuTTY/plink.exe" -2 -C -i "C:/path/username/serversvn.ppk" 不会工作

【讨论】:

【参考方案5】: 使用 Plink 手动连接到服务器。定义 plink 所需和正确的(为您)启动选项 将此行(使用 tortoiseplink 作为无窗口plink)添加到%APPDATA%config 文件,[tunnels] 部分

【讨论】:

我在此文件中更改的设置似乎不会影响应用程序的工作方式。

以上是关于如何从命令行使用 svn+ssh 和 Tortoise SVN的主要内容,如果未能解决你的问题,请参考以下文章

使用 svn+ssh 时设置 SVN 用户名(Eclipse 中的作者名)

打开从 svn 签出的 android 项目时出现错误“无法使用 subversion 命令行客户端:svn”

如何通过命令行使用 TortoiseSVN?

如何从 OVH 服务器上的 ssh 命令行更新 Drupal 9?

如何强制 ssh 从命令行接受新的主机指纹?

如何使用 ANT 任务从 SVN 结帐?