首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择Subversion服务器

选择Subversion服务器
EN

Stack Overflow用户
提问于 2009-07-25 19:33:19
回答 4查看 2.2K关注 0票数 7

在为我的版本控制需求选择Apache颠覆之后(为我的主要Subversion客户端选择AnkhSVN / TortoiseSVN )。现在,我正在尝试选择SVN服务器来提供对SVN存储库的远程访问。我看过其中几个:

  • CollabNet颠覆边缘
  • VisualSVN服务器

我已经在VM中安装了每个VM来尝试它们,但是还没有找到足够的方法来区分它们中的大多数,以选择任何特定的。现在我有几件事需要做决定。

  1. 协议
  2. 供应商
  3. SSL
  4. 我读过HTTP比SVN协议慢得多的。虽然我的项目一般不是太大(实际上只有初始导入是耗时的部分),但我确实希望获得SVN的性能好处,并避免我的HTTP日志被SVN条目淹没(到目前为止,我还无法将这些条目隔离到一个单独的日志文件中)。

不过,我确实喜欢使用Apache模块或VisualSVN提供的web接口。我真的不需要把我的东西提供给别人(甚至我自己也不需要),所以它并不重要,但它确实允许扩展性。

  1. 在选择协议之后(假设我必须选择);我需要帮助来决定使用哪个供应商。我最初使用了来自底格里斯发行版的Apache模块。从那时起,我已经删除了它(嗯,刚刚禁用了它),并且目前正在使用VisualSVN (它是HTTP,因此速度慢)。我见过人们支持夏普和丝丝,但他们似乎更小,独立发行版。 另一方面,Collabnet似乎比我所需要的更精细。基本上,除非我可以说服其中之一,我主要是试图在官方底格里斯和VisualSVN之间作出选择。
  2. 我也尝试过使用SSL,但没有成功(我买不起真正的CA,所以我在VisualSVN中使用了一个自签名证书)。我很乐意使用SVN+SSH/HTTPS,但是如果我在自己的系统上使用它,那么它就没有必要了,如果我在外部使用它,那么我的自我签名证书就不会有帮助了。

我想我甚至可以使用本地存储库;我认为它将是最快的。不过,我更希望有一个更正式的解决方案,以防我进行扩展。(我考虑过只使用TortiseSVN客户机在本地完成服务器的工作。)

总之,我需要一些关于哪个服务器(?)的建议。来使用。如果我能够让VisualSVN提供一个用于web使用的HTTP接口,但也可以在客户端上使用SVN协议,最好是在每个客户端上选择SSL,那就太棒了。这有可能吗?这是否是太多的工作(我真的想回到我的项目,而不是所有这些元工作)。

非常感谢。

编辑

我想我应该提供一些关于我的情况的信息来澄清事情。

  • (目前)单一系统,(旧的P4,Windows,1GB的SDRAM)
  • (目前)单一开发商(我)
  • (目前)较小的项目(<2MB)
  • 无数的项目(>100个应用程序、游戏、图书馆、网站等)
  • 外部需要(特别是我自己的库,以及第三方的标题,助推,等等)
  • ?嗯,还有什么…
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-25 19:45:46

编辑:在阅读了这里的其他答案后,我想我应该提到一件事。如果您尝试一台服务器,您要求它提供的存储库将与您要求另一种类型的服务器提供的存储库没有什么不同。

换句话说,如果您现在决定尝试一台服务器,您可以稍后切换到另一种类型的服务器,而不会丢失您的存储库。当然,工作副本,以及您在项目中所做的任何绝对外部引用,都必须进行更改,但是您可以保留您的存储库的历史和所有内容。

VisualSVN服务器被宣布时,我安装了它,并对它感到非常高兴。

但是,速度问题使我切换到了作为Subversion命令行包的一部分提供的主svnserve服务器。

主要的问题是,我正在使用.NET,我选择向我的项目添加几个外部Subversion引用。

首先,也是最重要的,我在类库中创建的每个项目都由我的密钥签名。其次,添加了外部第三方库(如SQLiteNUnit )作为外部引用。

每个项目都有自己的外部引用。我这样做是为了能够创建一个新的应用程序项目,然后对我所需类库的部分进行新的外部引用,并完成这些引用。如果我在.NET中的类库解决方案有一个用于签名密钥文件的外部引用,而且该文件不能作为任何单个项目的一部分使用,而是位于所有项目之外的磁盘上,但位于我的解决方案的本地,则该文件将无法工作。

因此,我的类库解决方案包含大约15-20个项目,每个项目至少有一个对签名键的外部引用,我的所有数据项目都有对SQLite库的外部引用,单元测试库有4-5个外部引用。

最终的结果是,即使我已经拥有了所有最新的文件、目录和所有内容,在解决方案级别上的单个更新也需要大约2分钟的时间来完成。每一个外部引用都需要10到20秒的时间来完成,只是为了验证我是否已经完成了所需的修订。

当我切换到svnserve时,这2分钟缩短到了大约3秒。这是当地的交通注意事项,所以这当然会在互联网上有所不同。问题是,那2分钟也是当地的交通。

因此,虽然我非常喜欢VisualSVN服务器为我提供的接口,包括轻松设置访问权限和用户的能力,但与svnserve和本机Subversion协议相比,Apache服务器模块为我提供的速度绝对可怕。

请注意,从那时起,我安装了一个单独的Apache,涉猎了许多配置文件,并使用VisualSVN服务器以外的其他方式设置了Subversion,这只是为了确保它不仅仅是VisualSVN,而且我已经确认了我观察到的速度不是VisualSVN团队的工作。HTTP协议或Apache模块似乎没有那么快。

如果可能的话,我的建议是使用主svnserve服务器。可能需要一些工作才能了解用于授权的配置文件以及类似的配置文件,但只需了解刺激因素(即。任何刺激都不可能超过速度)。

票数 5
EN

Stack Overflow用户

发布于 2009-07-25 20:24:04

重新访问速度:我看到一个Apache服务器需要一个硬件更新。我似乎记得,主要是由于缺乏内存,减缓了争夺机器资源的众多Apache进程的速度。但这是20名开发人员在一个项目上进行合作,其签出树为20 in (其中有很多二进制文件,这些二进制文件经常会更改)。而升级到设备齐全的服务器解决了这个问题。

而且,在这个项目中,我不得不了解到,在Linux下,ext3 FS上的SVN至少比在下的NTFS快一个数量级。标记:运行在Windows上的虚拟机中的Linux花费了十分之一的时间与虚拟机运行的Windows机器竞争更新。(我们总是想尝试Windows操作系统的ext3驱动程序,看看这是否会使Windows比其本地FS更快。然而,在我们尝试之前,我就离开了这个项目。)

不管怎么说,这并不是说你的决定永远都是被扔进石头里的。您可以尝试一件事,在实际项目中彻底测试它,并在以后切换到不同的服务器和协议。(甚至还有一个SVN命令来切换签出树的URL。这可以用来切换协议,而不必重新检查所有内容。)

下面是我要决定协议的内容:如果您有一个可以工作的AD或LDAP基础设施,您想要利用这些基础设施登录到SVN中,请尝试其中一个http/https:协议选项。如果您没有这个,而且您不需要它,并且您可以通过SVN自己的方式登录,那么为什么不使用svn:协议提供的速度呢?

我从未见过人们使用WebDAV访问的SVN回购。他们总是希望在访问每个web时拥有历史记录(WebDAV不提供这种功能,AFAIK),所以他们使用了一个web前端作为SVN。我从来没有检查过,但我只是假设像ViewVC之类的东西并不关心它们用于访问回购协议的协议。

至于您想要使用的发行版,我认为这主要取决于个人喜好,因为下面的代码是相同的。我更喜欢我不需要注册的下载和明确针对我想要安装的平台的发行版。但可能只有我一个人。

但是,如果您的存储库可以从Internet上访问,您可能需要考虑一个很难的事实:当SVN项目发布一个新的点版本时,它过去花了多长时间才能赶上不同的发行版。因为这些可能是安全修复,所以您可能更喜欢那些通常能更快地提供修复的方法。

票数 2
EN

Stack Overflow用户

发布于 2009-07-25 20:45:32

我们使用在XEN虚拟机中运行在CentOS 5.3下的Apache提供的HTTP提供SVN存储库。

我会观察到,对一个大文件执行提交或签出操作时,该文件的传输速度接近于网络速度。在签出或执行大量小文件时,HTTP请求的开销要明显得多。

与编译代码的时间序列相比,SubVersion并不是公司内部的瓶颈。

(这是我与10名开发人员团队的经验)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1182859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档