哪个协议? svn://或http(s)://?
SVN的networking访问共有四种协议。
svn://repos svn+ssh://repos https://repos http://repos
维基百科页面并没有多说四个不同的协议的差异。 我一直比较喜欢svn://
,因为它是最容易设置的,但是有什么区别,哪个更好?
http://
有一个严重的开销,特别是在处理数以千计的小文件时。 我用SVN的网站有大约50000个图标,全部保存在SVN中。 使用HTTP,结账需要大约20分钟的时间。 一旦我切换到svn://
,花了不到一分钟的时间。 这是因为在HTTP中,每个文件都有一个新的HTTP请求。
然而, http://
有以下巨大优势:通常通过防火墙。 例如,现在我切换到svn://
因为他们的防火墙,我无法再从我的大学访问我的存储库。
关于使用SSL / TLS的差别,很明显:数据是encryption的; 但是设置起来比较困难。
svn+ssh
是SSH隧道内运行的svn
协议。 客户端使用SSHlogin远程服务器,并远程运行该隧道中的svn命令。 在我看来, svn+ssh
是在远程系统上使用Subversion版本库的最简单的方法,因为假设你已经有一个SSH服务器运行了,那么你没有任何服务器可以在该系统上启动。
另外, svn+ssh
受益于SSH的encryption保护。 不要在不可信任的networking上使用原始的svn
协议。
svn+ssh
的主要问题是它需要在远程机器上访问shell。 如果不允许他访问整个shell帐户,就很难提供对存储库的访问。 为此,您需要基于HTTP的方法之一,即http
或https
(由于encryption和身份validation层,最好是https
)。 这些方法configuration起来比较复杂(您需要一个HTTP / HTTPS服务器,例如Apache),但是允许存储库pipe理员仔细和精确地控制存储库访问权限。
https://
和svn+ssh://
是encryption的,所以安全传输安全数据(比如你的SVN密码。
如果是Git, svn+ssh://
会比https://
更快,而svn://
会比http://
更快。
另外,如果您使用http://(Apache + SVN),那么您可以让用户使用Windows身份validationlogin,并添加mod_auth_sspi模块。
看到这里: http : //blog.pengoworks.com/index.cfm/2007/11/1/Configuring-Windows-Authentication-with-Apache-22x-and-Subversion
所以你的(Windows)开发人员只需要记住一个用户/密码
http
和https
由Subversion支持的Web服务器模块处理,因此您可以使用基于HTTP的身份validation(通过.htaccessconfiguration)来限制对存储库的访问。
有人可能会说,在访问Subversion版本库时, svn://
或svn+ssh://
比普通的HTTP或安全的HTTPS提供了更好的性能和速度,但现在并不是这样。 虽然svn://
或svn+ssh://
比HTTP(S)更快,但与SVN 1.6或更低版本的区别并不大。
HTTP(S)和最新的Subversion 1.7+客户机和服务器没有主要的性能问题。
使用Subversion 1.7进行HTTP(S)访问变得更加高效,特别是在HTTPv2 (不要混淆HTTP / 2!)的 高延迟networking连接上 。 对于HTTP(S)访问 , Subversion 1.8从libneon
切换到libserf
,而libserf
提供比libneon
更好的性能。
如果您认为某些问题与您使用HTTP(S)的HTTP(S)或Subversion的性能有关,那么您应该调查networking上是否存在使HTTP(S)速度较慢的服务。 根本原因可能是防病毒,主动防火墙或代理。 更何况一个错误configuration的networking设置。 不要忘记使用最新的Subversion客户端和服务器!
考虑到networkingconfiguration错误的例子,似乎有一个很常见的问题,它影响了无法访问Windows更新站点( http://ctldl.windowsupdate.com/ )的断开networking上的客户端计算机。 这是一个影响广泛的系统服务的关键问题,但最终用户通过HTTPS使用Subversion客户端时会注意并报告。 这个问题看起来与性能有关,但不是。 阅读此StackOverflow线程的更多信息: https : //stackoverflow.com/a/38499619/761095 。