version control -与CVS相比,使用SVN有什么优势?

Translate

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

我知道SVN较新,但除此之外,我不了解它的优点。

我要寻找的是对这两个系统的简洁明了的比较,并指出了Java / Eclipse开发环境中每个系统的优点或缺点。

This question and all comments follow the "Attribution Required."

所有的回答

Translate

CVS仅跟踪每个文件的修改,而SVN跟踪整个提交作为新修订,这意味着更容易跟踪项目的历史记录。再加上所有现代源代码管理软件都使用修订的概念,因此从SVN迁移比从CVS迁移要容易得多。

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

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

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

来源
Translate

许多比较之一:

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

现在,这对于该项目非常特定,但是通常有很多东西。

专业版Subversion:

  • 支持版本化的重命名/移动(CVS不可):Fingolfin,Ender
  • 本地支持目录:可以删除它们,并且对它们进行版本控制:Fingolfin,Ender
  • 文件属性已版本化;不再有“可执行位”地狱:Fingolfin
  • 总体修订号使构建版本控制和回归测试更加容易:Ender,Fingolfin
  • 原子承诺:Fingolfin
  • 直观的(基于目录的)分支和标记:Fingolfin
  • 钩子脚本更容易(提交前/提交后等):SumthinWicked(提交后我将其用于Doxygen)
  • 防止意外提交冲突文件:咸马,Fingolfin
  • 支持自定义“ diff”命令:Fingolfin
  • 离线差异,它们是即时的:严重
来源
Translate

与CVS相比,SVN具有3个主要优势

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

颠覆书有附录详细介绍了与CVS的重要区别,这可能有助于您做出决定。两种方法大致相同,但是SVN是专门为修复CVS中长期存在的缺陷而设计的,因此,至少从理论上讲,SVN永远是更好的选择。

来源
Translate

我将支持Eridius关于Git的建议,但将其扩展到其他DRCS(分布式修订控制系统),例如水星市场.

这些产品是相当新的产品,目前工具和与之集成的水平似乎很低(根据我的初步研究)。我想说的是,它们最适合那里的电源开发人员(以及此处的-;)。

另一方面,什么CVS当前为您做什么?从最初的问题开始,您实际上并没有任何问题,“ CVS很烂,我该怎么用呢?”

您必须权衡任何潜在迁移的成本与收益。对于一个现有的项目,我认为很难证明其合理性。

来源
Translate

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

来源
Translate

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

来源
Translate

在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。如果在错误的位置启动存储库,则可以清理,但这会引起混乱。
来源
Translate

你应该看看吉特而不是SVN。 DVCS速度非常快,功能非常强大。它不像SVN那样方便用户使用,但是在这方面正在改进,并且没有很难学习。

来源
Translate

CVS(并行版本系统)和SVN(SubVersioN)是两个版本控制文件系统,在单个项目中进行协作的团队通常使用它们。这些系统使协作者可以跟踪所做的更改,并知道谁在开发哪个以及是否应将分支应用于主干。 CVS是两者中比较老的版本,它已成为很多人的标准协作工具。 SVN较新,它引入了许多改进来满足大多数人的需求。

来源
Translate

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

来源
Translate

好吧,我觉得有些事情使svn很棒。

  1. SVN-阿尔塔斯坩埚组合是一种非常出色的审查和质量检查方法
  2. 更好地管理冲突和合并
  3. 显然,结帐,执行提交等操作更快。
  4. 原子提交问题-在CVS中一起提交的2个人可能会相互冲突,丢失一些数据并使您的代码库处于不一致状态

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

来源