使用SVN优于CVS有什么优势?

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

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

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

0
额外 编辑
意见: 1

11 答案

Subversion的书有附录,详细介绍了与CVS的重要区别,这可能会帮助你做出决定。这两种方法或多或少都是一样的想法,但是SVN专门用于解决CVS中长期存在的缺陷,所以从理论上讲,SVN将永远是更好的选择。

0
额外

许多比较中的一个:

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

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

Pro Subversion:

  • Support for versioned renames/moves (impossible with CVS): Fingolfin, Ender
  • Supports directories natively: It's possible to remove them, and they are versioned: Fingolfin, Ender
  • File properties are versioned; no more "executable bit" hell: Fingolfin
  • Overall revision number makes build versioning and regression testing much easier: Ender, Fingolfin
  • Atomic commits: Fingolfin
  • Intuitive (directory-based) branching and tagging: Fingolfin
  • Easier hook scripts (pre/post commit, etc): SumthinWicked (I use it for Doxygen after commits)
  • Prevents accidental committing of conflicted files: Salty-horse, Fingolfin
  • Support for custom 'diff' command: Fingolfin
  • Offline diffs, and they're instant: sev
0
额外
Fingolfin和Ender只是该论坛的人名:每个“参数”背后都是一个同意这个特定论证是有效的人的名单。 </代码>
额外 作者 hinneLinks,
什么是“fingolfin”?用谷歌搜索这个词只会让人感到困惑
额外 作者 DuKes0mE,

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

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

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

EDIT 2015: Seriously, this answer is 7 years old now. Forget SVN, go use Git like everyone else!

0
额外
我希望git vs subversion和git vs mercurial的答案相同
额外 作者 Isaac Rabinovitch,

顺便说一句:CVSNT支持原子提交

0
额外

你也可以选择只将最新的代码从CVS迁移到SVN中并冻结你当前的CVS回购。这将使迁移变得更加容易,并且您还可以在旧的CVS回购中构建旧版本。

0
额外

作为正在切换CVS和SVN的中间人(最初我们将所有项目与cvs2svn进行切换,然后决定仅通过在新项目中使用svn进行转换),我们遇到了一些问题。

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

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

0
额外
陛下,你应该获得算命奖章。
额外 作者 altinturk,

SVN比CVS有三大优势

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

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

0
额外

我会继续讨论Eridius对Git的建议,但我会将它扩展到另一个DRCS(分布式修订控制系统),比如 Mercurial集市

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

另一方面,CVS目前没有 吗?从你最初的问题来看,你真的没有任何问题,“CVS在这个问题上很糟糕,我可以用什么来代替?”

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

0
额外

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

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

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

0
额外