我无法弄清楚我应该如何从名为fredistrano的CakePHP项目访问存储库(您可以使用Web 2.0接口进行CakePHP部署)。我在共享的unix Web服务器上的网络广播目录中有fredistrano。当我从笔记本电脑使用tortoisesvn时,我必须使用svn + ssh://username@domain.com/svnpath/trunk/。我尝试在fredistrano中使用相同的东西,但我一直得到svn命令错误“svn:网络连接意外关闭”。我复制并粘贴了命令:svn export --non-interactive --username myusername --password mypwd svn + ssh://myusername@mydomain.com/home/myusername/svn/mydomain.com/trunk tmpDir 2>& 1进入我的SSH终端连接到共享服务器,我得到一个密码提示,我相信实际上是SSH密码的提示而不是SVN密码(见post)。 fredistrano失败,因为它无法处理SSH密码提示。我在fredistrano文档中注意到该示例使用http://ipaddress/svn/test作为SVN URL。我将我的svn复制到我的网络广播目录并尝试了这个,但得到连接拒绝错误。我的共享托管服务提供商非常严格,我怀疑我可以使用它。有没有办法让svn + ssh与这样的PHP脚本一起工作(fredistrano只是使用shell_exec()来执行svn命令)?有没有办法让我得到svn,http或https工作(或任何其他我不知道的方法)?
答案 0 :(得分:1)
我也对这个问题感兴趣,我希望我接近解决方案。
由于缺乏时间和其他高优先级任务,我没有尝试将其投入到我的应用程序中,但我想它应该看起来像这样:
shell_exec(svn something svn+ssh://...)
$response = trim(fgets(STDIN))
[然后检查响应是否包含密码提示文本]
fwrite(STDOUT, 'yourpassword');
[分析下一个响应并查看SVN是否已返回所请求的信息 - 日志,信息,等等]
答案 1 :(得分:0)
"svn: Network connection closed unexpectedly"
最有可能意味着您的主机已限制/禁止访问其他主机。这可能意味着完全使用套接字(SVN,HTTP等)或者可能只使用非HTTP。在这种情况下,您应该尝试设置SVN服务器以允许HTTP请求(例如,对Apache使用mod_dav_svn
)。
这只是猜测 - 请参阅我对您问题的评论。
答案 2 :(得分:0)
如何从开发机器到svn-server进行身份验证?您可能正在使用密钥进行身份验证(您是否正在运行putty pageant?)
答案 3 :(得分:0)
可以查看Subversion PHP Module(1.0.3)而不是shell_exec
;它需要从源代码构建,phpize
,./configure
和make
(仅针对PHP 5.6和Subversion 1.9.5构建它)...而 Apache 版本控制不需要模块mod_dav(通过HTTP / HTTPS进行Subversion),而是访问存储库的可选方法。