我刚刚开始/熟悉Subversion,并且想知道 当通过网络访问Subversion存储库时,哪个协议提供了最佳性能文件://或svn://?如果我们不使用svn://协议,我们将无法使用file://协议来解决任何无法使用的功能?我们都在同一个NT域名&计划使用Windows Auth并使用NTFS / UNC安全性。
TIA!
答案 0 :(得分:14)
SVN Book建议您不为多个用户使用file://协议
Choosing a Server Configuration:
不要被所有用户直接通过file:// URL访问存储库的简单想法所诱惑。即使存储库通过网络共享随时可供所有人使用,这也是一个坏主意。它删除了用户和存储库之间的任何保护层:用户可能会意外(或故意)破坏存储库数据库,很难使存储库脱机以进行检查或升级,并且可能导致文件权限问题混乱(请参阅“支持多个存储库访问方法”一节。请注意,这也是我们警告不要通过svn + ssh:// URL访问存储库的原因之一 - 从安全角度来看,它实际上与通过file://访问的本地用户相同,并且它可能带来所有相同的问题如果管理员不小心
答案 1 :(得分:7)
如果要使用Windows身份验证,请使用http(s)协议和apache。设置起来有点困难,但不一定更快,但允许您使用标准的apache身份验证方法进行身份验证。包括各种基于Windows的身份验证方案,或kerberos。
顺便说一下。通常,协议速度不是svn速度的一个因素。 Svn将信息缓存在磁盘上,因此大多数常规操作都基于本地缓存。接下来,速度因子在存储库和网络带宽中,而不在协议中。
答案 2 :(得分:5)
通过svn://结账/更新比http(s)://快约4-12倍。因素取决于文件/文件夹的数量和文件大小。 Apache在许多小文件上要慢得多,因为每个文件都是一个完整的http请求 - 响应周期。 在Tortoise中你可以很容易地看到速度下降:
签出一个大的java项目如果你传输了一个巨大的.jar,那么转移正在进行,在获取源java文件和创建包结构时,它将会丢失。
同样重要的是 svn checkout 在客户端上比 svn export 慢,而且eclipse(java)比tortoise / CMD慢得多。
答案 3 :(得分:1)
我同意其他人的观点,svn://远远快于http://。话虽这么说,我在我的存储库上使用http://,因为我喜欢mod_authz_svn的访问控制文件,我还没有升级到1.5。
由于我的主存储库很大,我们维护svn://以只读方式运行。我向用户建议的是将您的初始结帐作为svn://然后使用svn relocate
将其转换为要提交的http:// url。 svn://的更新在我们可接受的时间内运行。
答案 4 :(得分:0)
正如Paul de Vrieze所说,SVN使用的协议不会像其他因素那样影响性能。如果您在小型局域网上,那么SVN协议可能会令您满意。在所有其他情况下,似乎最好使用HTTPs:// with Apache。我一直在局域网上,SVN://的性能比HTTPS更糟糕://连接互联网。
您还会发现Apache在安全性或SVN存储库查看方面也可能是一个更易于管理的解决方案。