Xcode 4.2 SVN问题

27
我在将我的项目仓库连接到Xcode时遇到了问题,自从我升级到4.2版本以后。我有一个本地服务器,通过转发端口可以从本地网络外部访问。我有一个指向外部IP的DNS记录。当我明确指定外部IP(即https://123.456.789.000/svn/...)时,仓库可以正确连接,没有问题。当我指定内部地址时,也可以正常工作。问题出现在使用仓库的DNS时 - Xcode显示一个带有"主机不可达"的红点。我确定这是一个Xcode 4.2特定的问题,因为我在其他客户端中尝试过,包括旧版本的Xcode。基本问题是 - 外部DNS在使用https时无法工作。
有什么想法吗?
8个回答

41
以上的方法都对我没用,但是下面是有效的方法: 我在Xcode 4.2中一直遇到"不受信任的证书"错误,我发现在Xcode中有一个只读的提示。 所以,我通过svn命令提示工具访问了我的svn服务器,并进行了一个虚拟操作。
svn co https://mysvnserver.com/project/
我在提示框中看到了与Xcode中相同的错误。
Error validating server certificate for 'https://mysvnserver.com:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
Certificate information:
 - Hostname: *.svn.mysvnserver.com
....
....
....
R)eject, accept (t)emporarily or accept (p)ermanently? 
现在这是关键:我在这里按下了一个p来接受(p)永久性,然后我能够通过提示访问存储库。接下来,我打开了Xcode并打开了存储库 - 一切都运行得非常顺利。

4
如果你想在Xcode中完成checkout,也可以使用以下命令:svn list https://mysvnserver.com/。对我而言,这种方法行得通,但是在Safari中接受证书却不起作用。 - Rn222
1
对我也起作用了,但由于证书已经更新,我必须从~/.subversion/auth/svn.ssl.server/目录中删除旧的存储信息。在此之前,即使输入了(p),svn每次都会再次询问(而XCode不接受/工作)。 - robbash
刚刚在4.5.1的XCode上又遇到了问题,但这次这个方法帮了我很多。再次感谢! - Stavash
1
我遇到了同样的问题。这个解决方法有用,但必须以sudo身份运行。 - George
我认为robbash的答案是正确的。删除此目录:~/.subversion/auth/svn.ssl.server/,并使用命令行工具提交文件并键入(p)。然后问题就会解决。 - Chilly Zhong
显示剩余2条评论

32

我遇到了类似于你的问题,建议你尝试以下步骤:

  1. 关闭Xcode +组织者
  2. 在Safari中打开您的svn网址(不要使用其他浏览器)-使用DNS名称
  3. 它应该会出现说地址不受信任,因为证书是不同的名称/地址
  4. 点击显示证书,然后勾选始终信任的框,然后继续
  5. 它可能会提示您输入mac用户名/密码以添加到钥匙串中
  6. 打开xcode,再次使用DNS名称尝试

Xcode与访问具有HTTPS证书的svn服务器的问题,如果证书未通过任何检查(无论是主机匹配、自签名等),则会失败。在Safari中打开并添加为受信任的地址可以解决此问题!


1
奇怪的是这对我不起作用。我不得不使用终端并输入svn co [url]... - Chang Hyun Park
对我不起作用,还有其他解决方案吗?或者这是XCODE 4.25本身的问题,并且在xcode 4.3中得到了解决?请帮忙。 - V.V
这个答案可能需要更新,以适应Safari的新版本,因为对话框已经改变。它不再提供添加证书异常的选项。 - Sergey Kalinichenko

6

在终端中运行命令

svn info https://example.com/svn

接下来会提示您"(R) 拒绝, (t) 暂时接受或 (p) 永久接受?" 请按下 p 键,问题将得到解决。


1

有时候XCode的SVN部分会表现异常。如果你的网络速度不好,XCode就无法正确更新文件状态。(从以往的经验来看。)

我建议你尝试使用svnXSmartSVN客户端。

正如上面的回复所说,确保在浏览器中检查你的服务器URL是否正确非常有帮助。


1

谢谢Joel,我会继续寻找可能的解决办法,直到悬赏过期。如果确实没有办法实现这一点,我将会标记您的答案。 - Stavash
真希望这个问题很简单,但是我最终还是通过使用HTTP协议并强制重新认证来解决了它。在抓耳挠腮数天后,终于如愿以偿了。 - D3vtr0n

1

您可以使用端口号而非 https 方案(http://someurl.com:443/svn)输入您的 URL:

  • 点击下一步后,Xcode 显示它可以解析主机名:

  • 输入仓库凭据和路径等信息:


嗨chown,谢谢你的回答。我输入了这些详细信息,仓库似乎已经与绿色指示器链接,但是一旦我想要进行检出,我就看不到任何文件/修订版本。 - Stavash
嗯,也许这行不通。我原本希望Xcode可以通过端口号(而不仅仅是HTTPS)识别SSL,但看来不行啊。抱歉@stavash,我会再试试看能否解决这个问题,因为我发现我的一个旧项目存储库也出现了这个问题。 - chown
这对我有用。HTTP不知何故清除了HTTPS设置并重新验证。非常有效,谢谢。 - D3vtr0n

0

在终端窗口中导航到~/Documents/[projectname],然后从那里执行svn commit怎么样?您应该会被提示接受证书。

也许Xcode在幕后做了一些事情,使这成为一个不好的想法?我只是不知道在Xcode内部提交(即文件>源代码控制>提交)和仅从命令行提交之间是否有任何区别。我以前都做过这两种方法,没有注意到任何问题。


1
使用命令行或外部工具(例如svnx)没有问题。将其与IDE集成只是为了方便。无论如何,谢谢! - Stavash

0

我已经搜索了几天,最终发现这是一个错误。我正在等待XCode的下一个更新。同时,我正在使用SmartSVN来应对...

如果你确实需要在IDE中使用SVN功能,我建议降级XCode,但那样你将无法构建到iOS5,我相信你想要....

你最好的选择是提交一个错误报告(许多人已经这样做了),然后等待和观察。


谢谢,Sid。我现在正在使用SVNX并等待修复。我也会提交一份报告。 - Stavash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,