使用SVN而不是CVS有什么好处?

shs*_*mer 59 svn cvs version-control

我的公司正在使用CVS作为源控制的事实标准.但是,我听说很多人都说SVN更好.

我知道SVN比较新,但除此之外,我对它的好处并不熟悉.

我正在寻找的是两个系统的良好,简洁的比较,注意到Java/Eclipse开发环境中每个系统的优点和缺点.

Vin*_*ert 61

CVS仅跟踪逐个文件的修改,而SVN将整个提交跟踪为新修订,这意味着更容易跟踪项目的历史记录.添加所有现代源控制软件都使用修订概念的事实,因此从SVN迁移比从CVS迁移要容易得多.

还存在原子提交问题.虽然我只遇到过一次,但有可能2个人在CVS中相互冲突,相互冲突,丢失一些数据并使客户端处于不一致状态.如果早期发现这些问题并不重要,因为您的数据仍然存在于某处,但在压力很大的环境中可能会很痛苦.

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

编辑2015:说真的,这个答案现在已经7年了.忘记SVN,像其他人一样使用Git!

  • 编辑2018:我为什么要在2018年阅读这个问题? (7认同)
  • “忘记 SVN,去使用 Git”:我认为这不是新旧的问题,也不是有多少人使用它的问题,它们是不同的东西 (3认同)

Mic*_*tum 19

众多比较中的一个:

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

现在这对于那个项目来说非常具体,但是很多东西都是普遍的.

Pro Subversion:

  • 支持版本化重命名/移动(CVS不可能):Fingolfin,Ender
  • 本机支持目录:可以删除它们,并且它们是版本化的:Fingolfin,Ender
  • 文件属性已版本化; 没有更多的"可执行位"地狱:Fingolfin
  • 总体版本号使构建版本控制和回归测试变得更加容易:Ender,Fingolfin
  • 原子提交:Fingolfin
  • 直观(基于目录)分支和标记:Fingolfin
  • 更简单的钩子脚本(提交前/后提交等):SumthinWicked(我在提交后将其用于Doxygen)
  • 防止意外提交冲突文件:Salty-horse,Fingolfin
  • 支持自定义'diff'命令:Fingolfin
  • 离线差异,他们是即时的:sev

  • Fingolfin 和 Ender 只是那个论坛的人名:`在每个“论点”后面是同意这个特定论点有效的人的名单。` (3认同)
  • 什么是“芬戈芬”?谷歌搜索这个词只会让它更加混乱 (2认同)

lub*_*sko 15

SVN与CVS相比有三个主要优势

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


Mat*_*Mat 7

Subversion的书中有一个附录,详细说明了与CVS的重要区别,这可能有助于您做出决定.这两种方法或多或少是相同的想法,但SVN专门用于修复CVS中长期存在的缺陷,因此,至少在理论上,SVN始终是更好的选择.