使用SVN比CVS有什么优势?

我的公司正在使用CVS作为我们事实上的源代码控制标准。 不过,我听到很多人说SVN比较好。

我知道SVN是更新的,但除此之外,我不熟悉它的好处。

我在寻找的是这两个系统的一个很好的,简洁的比较,指出在Java / Eclipse开发环境中每个系统的优缺点。

CVS只跟踪逐个文件的修改,而SVN跟踪整个提交作为新版本,这意味着更容易跟踪项目的历史。 添加所有现代源代码控制软件都使用修订概念的事实,所以从SVN迁移要比从CVS迁移要容易得多。

还有primefaces提交问题。 虽然我只遇到过一次,但CVS中的两个人可能会互相冲突,丢失一些数据,使您的客户处于不一致的状态。 当被发现的时候,这些问题并不重要,因为你的数据仍然存在于某个地方,但是在紧张的环境中它可能是一个痛苦。

最后,围绕CVS开发的工具并不多。 虽然像Git或Mercurial这样新的,有新意的工具肯定缺乏工具,但SVN在任何系统上都有相当大的应用程序基础。

编辑2015年 :严重的是,这个答案现在是7岁。 忘记SVN,像其他人一样使用Git!

其中一个比较:

http://wiki.scummvm.org/index.php/CVS_vs_SVN

现在这个项目是非常具体的,但是一般来说很多东西都可以用。

Pro Subversion:

  • 支持版本化的重命名/移动(CVS不可能):Fingolfin,Ender
  • 本地支持目录:可以删除它们,并且它们是版本化的:Fingolfin,Ender
  • 文件属性是版本化的; 没有更多的“可执行位”地狱:Fingolfin
  • 整体修订版本使构build版本和回归testing变得更容易:Ender,Fingolfin
  • primefaces提交:Fingolfin
  • 直观的(基于目录的)分支和标记:Fingolfin
  • 更简单的钩子脚本(提交之前/之后提交等):SumthinWicked(我提交后使用它为Doxygen)
  • 防止意外提交冲突的文件:咸马,Fingolfin
  • 支持自定义“差异”命令:Fingolfin
  • 离线差异,他们即时:sev

SVN比CVS有三大优势

  • 速度更快
  • 支持二进制文件的版本控制
  • 并添加事务提交(全部或全部)

Subversion的书有一个附录 ,详细说明了CVS的重要区别,这可能会帮助你做出决定。 这两种方法或多或less都是一样的想法,但是SVN是专门为解决CVS中长期存在的缺陷而devise的,所以从理论上来说,SVN永远是更好的select。

有一点不可忽视的是生态系统。 我在一家CVSNT商店工作,默认情况下,我发现越来越多的开源工具支持SubVersion。

我会第二个Eridius的Git的build议,但我会扩大到其他DRCS(分布式修订控制系统),如Mercurial和集市 。

这些产品是相当新的,目前的工具和整合水平似乎很低(基于我的初步研究)。 我会说他们最适合那里的权力开发者(在这里;-))。

另一方面,CVS目前还没有为你做什么? 从你最初的问题来看,你真的没有什么,“CVS吸这个,我可以用什么呢?

你必须权衡任何潜在的迁移成本与收益。 对于现有的项目,我认为这很难说明问题。

作为一个在CVS和SVN之间切换的人(最初我们用cvs2svn切换了所有的项目,然后决定在新项目中只使用svn),下面是我们遇到的一些问题。

  • 合并和分支是非常不同的,如果你经常分支和合并,除非你有你的服务器上运行的SVN 1.5必须知道你什么时候分支(这在SVortoise SVN对话框中不是很清楚)。 迈克尔说,分支和合并是直观的,我认为使用CVS 10年后,事实并非如此。
  • 如果你在Linux上运行SVN服务器,可能很难让你的SA转移到svn 1.5,因为默认安装1.4.x。
  • 在TortoiseSVN中合并冲突并不像在TortoiseCVS中那样容易或者清楚(至less对我和我的同事来说)。 三窗格方法需要一些习惯和WinMerge(我的首选合并工具)不做三窗格合并。
  • 请注意:我读过的许多在线教程和杂志文章显然不会进行分支和合并,您应该将主资源库设置为https://svn.yoursvnserver.com/repos/YourProject/Trunk,并在https:/ /svn.yoursvnserver.com/repos/YourProject/Branches/BranchX 。 如果您在错误的地方开始回购,可以清理干净,但会导致混淆。

顺便说一句:CVSNT支持primefaces提交

你应该看看Git而不是SVN。 这是一个非常快速和非常强大的DVCS。 它不像SVN那么友好,但在这方面正在改进,并不难学。

您也可以select将最新的代码从CVS迁移到SVN,并冻结当前的CVS回购。 这将使迁移更容易,您也可以在旧的CVS回购中构build旧版本。

那么,我觉得有些东西让svn真棒。

  1. SVN-Altassian坩埚组合是一种非常优秀的评论和质量检查方法
  2. 更好地pipe理冲突和合并
  3. 这显然更快结账,执行提交等。
  4. primefaces提交问题 – 可能有两个人在CVS中一起提交可能会相互冲突,丢失一些数据,并使您的代码库处于不一致的状态

使用cvs2svn可以在几个小时内轻松完成迁移。