VisualSVN服务器在互联网上可见,但并非所有的子命令在客户端上工作

所以我的老板是一个很好的人,他愿意尝试新的想法,我让他让我开始新的项目(而不是旧的版本控制系统)。 目前,我们已经意识到能够从异地访问我们的svn服务器符合我们的利益。 我说这很简单,只要打开80端口即可(即使在互联网上公开,我们并不要求我们的svn具有很高的安全性,所以请不要将主题改为http和https,如果有的话,这将是一个单独的问题。显然,直到我们解决眼前的问题,没有什么可以保证的。)

我现在发现的可怕的事情是,svn st -u不起作用, 但是其他子命令也起作用,例如svn relocate和svn log。 具体来说,svn st -u不打印输出,并挂起,直到我用^ C杀死它。 当我svn重新安置我的工作拷贝到我们的公共IP地址时,我正确地挑战了我的svn凭证并且命令成功了。 Svn日志打印日志,即行为正常。 以上所有内容适用于在存储库根目录为公有IP地址的工作副本上执行的命令(或者,在svn relocate的特殊情况下,将存储库根目录重新定位到我们的公共IP地址)。 为了在存储库根目录的Intranet上使用服务器networking名称的副本,所有命令都可以正常工作。

为了排除外部防火墙的“http动词阻塞”作为解释,我尝试将访问方法更改为端口81上的http和端口443上的https,每次更改服务器上的访问方法时重新定位工作副本。 一个firweall不能有select地阻止对http端口或者动词被encryption的stream量的http动词。 但是这些举措并没有解决任何问题。 使用Wireshark,我可以看到我的客户端计算机上的svn和任何这些模式下的公共IP地址之间的stream量,但是,我不确定在哪里find对话出错的地方(特别是当协议是https时)。 。

我们使用VisualSVN Server v3.5.3“标准版”。 此服务器仅支持http://和https://访问,不支持svn://。 客户端是TortiseSVN v1.9.3。 操作系统是用于客户端和服务器的Windows 7(它们是同一个Intranet上的两台不同的计算机)。

你提到你正在运行VisualSVN v3.3.1。 是否有一个原因,你正在使用这样一个旧版本的VisualSVN? 该版本现在已经超过一年了,可能会错过与您遇到的问题相关的错误修复。 我build议升级到v3.5.3,然后看看你是否仍然有这个问题。 VisualSVN是一个你需要非常努力地保持最新的产品,尤其是当你使服务器公开可用,因为它使用由于公开披露的漏洞而频繁更新的Apache和OpenSSL。 可能有50多个CVE在运行3.3.1时缺less修补程序(请参阅https://www.visualsvn.com/server/changes/ )。

如果更新版本仍然不能解决问题,我会说你最好的select是直接联系VisualSVN支持。

它仍然看起来像问题是与您的防火墙或代理。 最有可能的是,这个问题是由一些可以由你的ISP设置的透明代理引起的。

  • 你说你已经尝试使用端口443,但是你使用HTTP或HTTPSstream量呢? 请启用真正的HTTPS并查看是否有任何区别。
  • svn status -u使用PROPFIND请求,而svn log则不使用。 那么像svn ls这样的其他命令如何使用PROPFIND呢? Howe关于不使用PROPFIND的svn log ? 做他们的工作?

在任何情况下,您都可以安装Fiddler,捕获日志并将其发送到VisualSVN Team [email protected]

安装Fiddler并运行命令svn status -u <URL> --config-option=servers:global:http-proxy-host=127.0.0.1 --config-option=servers:global:http-proxy-port=8888使请求通过小提琴手。 发送日志到[email protected],我们将仔细看看。

原来,用任何代理configuration我的svn客户端解决了这个问题。 这可以在命令行(如在@ bahrep的答案)或在服务器configuration文件中完成。 代理可以是一个免费的公共代理,如50.97.88.2。

PS我也接触visualsvn支持build议在下面的答案。 他们像这里一样迅速和有帮助,并导致相同的解决scheme。