CVS和SVN的比较类似与比较C++和Java。很明显CVS和SVN都远比 SourceSafe强大的多,如同C++和Java比Basic强大的多。CVS代表了几乎代码控制系统的所有功能项,尽管有时他的实现并不很方便。 SVN,修正并添加了一些CVS并不拥有功能。例如,创建标志和分支dubious,你在编辑文件是其他人不会有任何通知。这有点象Java的发明者:他们认为你不需要指针他们就在Java里面取消了指针, Java里也没有操作符重载。
1 存储类型格式
CVS是个基于RCS文件的版本控制系统。每个CVS文件都不过是普通的文件,加上一些额外信息。这些文件会简单的重复本地文件的树结构。因此,不必担心有什么数据损失,如果必要的话你可以手工修改RCS文件。 SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明,或是说并不那么用户友好了。那就是为什么工具软件,对仓库 (数据库)变得那么重要了。
2 速度
CVS比较慢。 整体而言,由于架构实现的不同, SVN的确比CVS快很多。在网络上它只传输很少的信息并支持更多的离线模式的功能。但这也是有代价的。速度的代价就是巨大的存储(完全备份所有的工作文件)。
3 标志&分支 (!!!重要)
在我们看来,这些实现是适宜的。 SVN开发员自认为把采用标志和分支而抛弃了其他三件东西是件了不起的事。实际上这意味着他们把这个概念替换为在档案库内部复制文件或目录以便保存日志。这样一来,无论标志创建还是分支创建都只是仓库内部的文件复制了。在SVN的开发员看来,这是个很优雅的决策,这让生活变得如此简便。而我们看来,这丝毫没有什么值得骄傲之处。对分支而言,事情还不怎么糟糕,现在分支不过是在仓库内部的一个单独的目录而已了,不象早期还有些什么交错。对标志而言,事情就不那么妙了。你已经不能对代码加标志了,这个功能就这么没了。在某种程度上说,SVN全文件编号补足了这个缺陷, SVN里整个仓库都有版本号,但不是针对单个文件。当然,如果你认为一个符号标志比一个四位编码有效的话,我们业无话可说。
4 元数据
CVS只允许存储文件。 SVN允许一个文件有任意都的可命名属性。功能十分完全,但不知到有什么用。
5 文件类型
CVS最初是为文本文件存储而设计的。因此其他文件类型(二进制,统一码)文件的支持几乎没有,如需要的话则要有其他信息,并且客户端服务器端都要调整。
SVN会关心所有的文件类型,不需要你来手工操作。
6 滚回
CVS允许任意的滚回,在任意一个已递交的版本上,尽管着要花些时间(所有的文件都要分别处理)。
SVN不允许递交后滚回。我们建议把仓库里好的状态版本加到末尾,覆盖掉损坏的版本。而损坏的版本无论如何也是会存在数据库里的。(svn的滚回操作实际上是merge操作)
7 事务
CVS中的“零或一”事务原则根本没有实现。如果检入几个文件的话(加到服务器上),很有可能部分文件完成了,而另几个没有。做为一个潜规则,手工纠正这些并且对余下的文件 (而不是所有文件)一一重复检入。这样这些文件将在两阶段中被检入。但至今为止,因为这个功能缺少而导致的数据仓库损坏的案例还没有出现过。
SVN的确支持“零或一”事务原则,这是SVN的一大优势。
8 可用性
CVS可以用在你需要的地方,支持完善。
SVN并未广泛运用,一些支持项目仍然没有实现。
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等
是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
GitLab is great if you want a lot of private git repositories but don’t want to pay GitHub for them. It gives you all the features you expect, but is also pretty resource intensive; you’ll need a reasonable VPS to run it and you’ll need to allocate some Ops time to managing it and keeping it up to date, even with the Omnibus packages.
gitosis is now obsolete, and not actively maintained anymore.
gitolite is great for providing a small team with centralised access to git repositories.However it is not a replacement for an organisation account on GitHub with private repositories. It provides no additional features around repositories such as issue tracking, a wiki, web-based browsing of commit history and files.
一个项目 1G存储容量