【发布时间】:2010-01-26 16:48:34
【问题描述】:
SVN的网络访问常用的协议有四种。
svn://repos
svn+ssh://repos
https://repos
http://repos
Wikipedia 页面没有过多说明四种不同协议的差异。我一直首选svn://,因为它是最容易设置的,但有什么区别,哪个“更好”?
【问题讨论】:
SVN的网络访问常用的协议有四种。
svn://repos
svn+ssh://repos
https://repos
http://repos
Wikipedia 页面没有过多说明四种不同协议的差异。我一直首选svn://,因为它是最容易设置的,但有什么区别,哪个“更好”?
【问题讨论】:
http:// 具有严重 开销,尤其是在处理数千个小文件时。我将 svn 用于一个有大约 50,000 个图标的网站,所有图标都保存在 SVN 中。使用 HTTP,结帐大约需要 20 分钟。切换到svn:// 后,只用了不到一分钟。这是因为对于 HTTP,每个文件都有一个新的 HTTP 请求。
http:// 但是有以下很大的优势:它通常可以通过防火墙。例如,现在我切换到svn://,由于他们的防火墙,我无法再从我的大学访问我的存储库。
关于是否使用 SSL/TLS 的区别,很明显:数据是加密的;但是设置起来比较困难。
【讨论】:
svnserve 的速度与 Apache 上的 HTTP(S) 之间的差异并不大。
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),但允许存储库管理员仔细和精确地控制存储库访问权限。
【讨论】:
https:// 和 svn+ssh:// 已加密,因此传输安全数据(例如您的 SVN 密码)更安全。
如果它类似于 Git,svn+ssh:// 将比 https:// 快,svn:// 将比 http:// 快。
【讨论】:
svn(或者可能是其他一些二进制文件?)的权限。
有人可能会说svn:// 或svn+ssh:// 在访问 Subversion 存储库时提供比普通 HTTP 或安全 HTTPS 更好的性能和速度,但现在情况并非如此。虽然 svn:// 或 svn+ssh:// 比 HTTP(S) 更快,但差异并不像 SVN 1.6 或更早版本那么大。
HTTP(S) 和最新的 Subversion 1.7+ 客户端和服务器没有主要性能问题。
使用 Subversion 1.7 became much more performant and especially on high-latency network connections thanks to HTTPv2 访问 HTTP(S)(不要与 HTTP/2 混淆!)。 Subversion 1.8 switched from libneon to libserf for HTTP(S) access 和 libserf 提供比 libneon 更好的性能。
如果您认为某些问题与通过 HTTP(S) 运行的 HTTP(S) 或 Subversion 的性能有关,您应该调查您的网络上是否有任何服务使 HTTP(S) 变慢。根本原因可能是防病毒软件、活动防火墙或代理。更不用说配置错误的网络设置了。不要忘记使用最新的 Subversion 客户端和服务器!
考虑网络配置错误的例子,似乎有一个很常见的问题会影响在无法访问 Windows Update 站点 (http://ctldl.windowsupdate.com/) 的断开网络上工作的客户端计算机。这是一个影响广泛系统服务的关键问题,但最终用户在通过 HTTPS 使用 Subversion 客户端时会注意到并报告它。这个问题看起来与性能有关,但事实并非如此。阅读此 StackOverflow 线程以获取更多信息:https://stackoverflow.com/a/38499619/761095。
【讨论】:
此外,如果您使用 http:// (Apache + SVN),那么您可以通过添加 mod_auth_sspi 模块让您的用户使用 Windows 身份验证登录。
因此您的(Windows)开发人员只需记住一个用户/密码
【讨论】:
http 和 https 由 Web 服务器模块处理以支持 Subversion,因此您可以使用基于 HTTP 的身份验证(通过 .htaccess 配置)来限制对您的存储库的访问。
【讨论】: