SVN网络访问共有四种协议。哪种协议? svn://或http(s)://?
svn://repos
svn+ssh://repos
https://repos
http://repos
维基百科页面并没有多说四种不同协议的差异。我一直倾向于svn://
,因为它是最容易设置的,但有什么区别,哪一个更好?
SVN网络访问共有四种协议。哪种协议? svn://或http(s)://?
svn://repos
svn+ssh://repos
https://repos
http://repos
维基百科页面并没有多说四种不同协议的差异。我一直倾向于svn://
,因为它是最容易设置的,但有什么区别,哪一个更好?
http://
有一个严重开销,尤其是在处理数千个小文件时,我使用了svn作为一个包含大约50000个图标的网站,全部都保存在SVN中,使用HTTP,花费了大约20分钟的时间。切换到svn://
,花了不到一分钟。这是因为使用HTTP时,每个文件都有一个新的HTTP请求。
http://
然而,它有以下巨大优势:它通常经过防火墙。例如,现在我切换到svn://
,因为他们的防火墙,我无法再从我的大学访问我的存储库。
关于使用SSL/TLS与否的区别,很明显:数据是加密的;但是设置起来更加困难。
https://
和svn+ssh://
被加密,因此用于传输安全数据(如您的SVN密码更安全。
如果它像混帐东西,svn+ssh://
将快于https://
和svn://
将快于http://
。
http
和https
由Web服务器模块为Subversion支持处理,因此您可以使用基于HTTP的身份验证(通过.htaccess配置)来限制对存储库的访问)。
那么,你也可以使用svnserve进行身份验证..它只是以一种稍微不同的方式完成的。 – 2010-01-26 16:57:14
是的,如果您有100个存储库用于同一开发人员组,则需要在任何存储库中传输配置文件。这样,只能有一个允许它们访问的文件,并且其中的每个更改都将控制对任何存储库的访问 – Vestel 2010-01-26 17:01:24
您可以使用svnserve +符号链接获得相同的效果。另外,为同一个开发人员组创建几个存储库是没有意义的,并且不会受官方svn书籍的影响。 – 2010-01-26 17:17:38
svn+ssh
是在SSH隧道内运行的svn
协议。客户端使用SSH登录远程服务器,并在该隧道中远程运行svn命令。在我看来,svn+ssh
是在远程系统上使用Subversion版本库的最简单方法,因为您没有任何服务器可以在该系统上启动,假设您已经运行了SSH服务器。
另外,svn+ssh
受益于SSH的加密保护。请勿在不可信网络上使用原始svn
协议。
svn+ssh
的主要问题是它需要在远程机器上进行shell访问。如果不允许他访问整个shell帐户,就很难提供对存储库的访问权限。为此,您需要基于HTTP的方法之一,即http
或https
(由于加密和身份验证层,最好是https
)。这些方法配置比较复杂(您需要HTTP/HTTPS服务器,例如Apache),但允许存储库管理员仔细并精确地控制存储库访问权限。
使用svn + ssh,很容易限制对svn的访问。 – 2015-08-01 23:48:23
另外,如果您使用http://(Apache + SVN),那么您可以让您的用户使用Windows身份验证登录并增加了mod_auth_sspi模块。
所以你(窗口)的开发者只需要记住一个用户名/密码
有人可能会说,svn://
或svn+ssh://
提供比普通HTTP更好的性能和速度或安全的HTTPS时访问Subversion版本库,但现在不是这样。虽然svn://
或svn+ssh://
比HTTP(S)更快,但与SVN 1.6或更低版本的差别并不那么大。
有no HTTP(S)和最新的Subversion 1.7+客户端和服务器的主要性能问题。
使用Subversion 1.7的HTTP(S)访问became much more performant and especially on high-latency network connections thanks to HTTPv2(不要与HTTP/2混淆!)。 Subversion 1.8 switched from libneon
to libserf
for HTTP(S) access和libserf
比libneon
提供更好的性能。
如果您认为某些问题与HTTP(S)或Subversion在HTTP(S)上的性能有关,则应该调查网络上是否存在任何使HTTP(S)变慢的服务。根本原因可能是防病毒,主动防火墙或代理。更不用说错误配置的网络设置。不要忘记使用最新的Subversion客户端和服务器!
想到网络配置错误的例子,似乎有一个相当普遍的问题,它影响到在无法访问Windows更新站点(http://ctldl.windowsupdate.com/)的断开网络上工作的客户端计算机。这是影响各种系统服务的关键问题,但最终用户在通过HTTPS使用Subversion客户端时会注意并报告。问题看起来与性能有关,但事实并非如此。阅读这StackOverflow线程获取更多信息:https://stackoverflow.com/a/38499619/761095。
http(s)://的另一个优点是符合WebDAV标准。这意味着你可以将这样的存储库安装在例如资源管理器或其他WebDAV客户端。请参阅http://svnbook.red-bean.com/nightly/en/svn.webdav.html – Stefan 2010-01-27 15:03:50
由于涉及巨大的开销和缺乏WebDAV客户端,Svn正在从v1.7开始移开WebDAV标准。 – whitey04 2011-12-14 12:20:32
Downvoted,因为这个答案不再是实际的。 SVN 1.7和更高版本大大提高了HTTP(S)的使用率,svnserve的速度和HTTP(S)之间的差异并不是那么大。 – bahrep 2016-08-08 15:13:47