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

时间:2008-08-04 14:06:49

标签: svn version-control cvs

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

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

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

12 个答案:

答案 0 :(得分:60)

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

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

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

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

答案 1 :(得分: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
  •   

答案 2 :(得分:14)

SVN比CVS有三个主要优势

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

答案 3 :(得分:7)

Subversion的书籍an appendix详细说明了与CVS的重要区别,这可能有助于您做出决定。这两种方法或多或少是相同的想法,但SVN专门用于修复CVS中长期存在的缺陷,所以至少在理论上,SVN永远是更好的选择。

答案 4 :(得分:4)

我将首先提出Eridius对Git的建议,但我会将其扩展到其他DRCS(分布式版本控制系统),例如Mercurialbazaar

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

另一方面, CVS目前为您做什么?从你最初的问题来看,你真的没有,“CVS很糟糕,我可以使用什么呢?”

你必须权衡任何潜在迁移的成本与利益。对于现有项目,我认为很难证明这一点。

答案 5 :(得分:4)

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

答案 6 :(得分:2)

作为正在切换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上分支。如果你在错误的地方开始你的回购,你可以清理,但这会导致混乱。

答案 7 :(得分:2)

btw:CVSNT支持原子提交

答案 8 :(得分:1)

你应该看看Git而不是SVN。这是一款超快速且功能强大的DVCS。它不像SVN那样用户友好,但它在这方面有所改进,而且 难以学习。

答案 9 :(得分:1)

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

答案 10 :(得分:0)

嗯,我觉得有些事情让人觉得很棒。

  1. SVN-Altassian坩埚组合是一种非常优越的评审和质量检查方法
  2. 更好地管理冲突和合并
  3. 结帐,执行提交等明显更快。
  4. 原子提交问题 - 在CVS中一起提交的2个人可能会相互冲突,丢失一些数据并使代码库处于不一致状态
  5. 使用cvs2svn可以在几个小时内轻松完成迁移。

答案 11 :(得分:0)

您也可以选择仅将最新代码从CVS迁移到SVN并冻结当前的CVS仓库。这将使迁移变得更容易,您也可以在旧的CVS仓库中构建旧版本。