好的,我在设置SVN + SSH时遇到了问题。
我在Linux服务器上运行SVN并尝试从运行Snow Leopard的Mac笔记本电脑进行连接。 XCode尝试连接,但给出消息“错误210002,网络连接意外关闭。”
网上似乎没有任何解释。我使用HTTP与HTTP连接,它适用于所有存储库。
这是我的SVN vesrion:
svn, version 1.5.4 (r33841)
compiled Aug 7 2009, 01:44:11
Copyright (C) 2000-2008 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
我目前已将其设置为使用http,它可以正常运行。
http://username@example.com/svn/project
我可以使用用户名和密码ssh到服务器,并运行
等命令svn list file:///home/svn/project
我得到了该项目内容的清单。所以,我不认为这是一个权限问题。
服务器上的文件位于/ home / svn / project。
我正试图让它在XCode中运行。使用路径作为/ home / svn / project或/ svn / project在http中无效。
但是,从笔记本电脑中,以下命令会按预期列出信息:
svn list svn+ssh://username@example.com/home/svn/project
username@example.com's password:
branches
tags
trunk
Killed by signal 15.
程序svnserve没有运行,但我登录的用户可以运行它。如果我在前台模式下启动它,它似乎没有任何改变。
任何想法我都缺少。很想能够运行svn + ssh并关闭http访问。
干杯!
修改
有关更多信息,我发现它只是一个存储库。服务器上的所有其他存储库似乎都可以正常使用SVN + SSH。
这似乎是一个XCode错误,但我不确定。这是关于XCode如何读取可能在计算机中缓存的SSH连接信息。
答案 0 :(得分:4)
要抑制“被信号15杀死”消息,请按照here设置SVN_SSH="ssh -q"
。
答案 1 :(得分:1)
那个'被信号15杀死'是一个线索,即使你的命令行使用,某些事情也不是很正确。我记得修复同样的问题,但不记得确切的原因。我认为这与我处理非标准ssh端口以及在本地计算机和远程服务器上使用不同用户名的方式有关。
您的svn主机是否有非标准的ssh端口和/或不同的用户名?我从使用SVN_SSH变量切换到将端口设置为在我的.ssh / config文件中放入一个正确的条目,该文件为ssh连接设置了用户名和端口。
Host example.com
User username
Port port
我不确定xcode是否尊重你的.ssh / config。
答案 2 :(得分:1)
您的服务器是否有防火墙,如果是,它是否会限制SSH连接尝试次数,例如通过here描述的方法?我们遇到的问题与svn checkout
的{{1}}连接断开完全相同,而svn ls
除svn+ssh://
以外。我们将防火墙上的连接设置调整得更宽松,允许每分钟更多的连接,这立即解决了我们的问题。似乎SVN在某些操作期间非常积极地启动连接,而对于其他操作则更少。
答案 3 :(得分:1)
此处提供的解决方案均不适用于svn+ssh
,但我可以通过https
进行连接和结帐:
$ svn checkout --username myusername https://scm.gforge.inria.fr/svn/concha
答案 4 :(得分:0)
我遇到了“被信号15杀死”的问题。顺便说一下。将主机,用户和端口添加到.ssh/config
无法解决此问题。
OSX 10.5 / 10.6没有记录标志-q(这就是为什么至少我忽略了这个建议,正如sl建议的那样,很长一段时间),但它确实可以在OSX 10.5上运行(当然也在10.6上,但是我没有它)。在~/.subversion/config
中,我添加了
ssh = $SVN_SSH ssh -q -o ControlMaster=no
在第55行附近的某个地方(如果你的盒子仍然是新鲜的,它可能有一个非常类似于此处的注释掉的线)。 -o ControlMaster=no
处理我拥有的另一个ssh设置,否则会完全破坏它。
答案 5 :(得分:0)
以下是我修复此问题的方法(在Mac OS X上,但修复程序应该适用于任何客户端)。
当您为SSH服务器使用非标准端口(例如,假设为12001)时,会出现此特定问题。
显然,SVN客户端在命令行上给出端口地址时会遇到语法错误,如下所示:
svn list svn+ssh://username@domainname.com:12001/home/username/svn/myproject
因此,要解决这个问题,您需要为SSH创建一个客户端配置文件,如下所示:
cd ~
cd .ssh
vi config (create a config file like the one that follows)
:w
:q
位于~/.ssh/config
中的配置文件:
Host domain.com
User username
Port 12001
然后,发出你的svn + ssh命令,没有像这样的端口:
svn list svn+ssh://username@domain.com/home/username/svn/myproject