我的公司正在使用CVS作为源控制的事实上的标准。但是,我听说很多人都说SVN更好。
我知道SVN比较新,但除此之外,我对它的好处并不熟悉。
我正在寻找的是两个系统的良好,简洁的比较,注意到Java / Eclipse开发环境中每个系统的优点和缺点。
答案 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(分布式版本控制系统),例如Mercurial和bazaar。
这些产品是相当新的,目前它们的工具和集成水平似乎很低(基于我的初步研究)。我会说他们最适合那里的电力开发者(在这里; - ))。
另一方面, CVS目前为您做什么?从你最初的问题来看,你真的没有,“CVS很糟糕,我可以使用什么呢?”
你必须权衡任何潜在迁移的成本与利益。对于现有项目,我认为很难证明这一点。
答案 5 :(得分:4)
有一点不容忽视的是生态系统。我在CVSNT商店工作,我发现默认情况下支持越来越多的开源工具支持SubVersion。
答案 6 :(得分:2)
btw:CVSNT支持原子提交
答案 7 :(得分:2)
作为正在切换CVS和SVN之间的人(最初我们用cvs2svn切换了所有项目,然后我们决定只在新项目上使用svn进行转换),这里有一些我们遇到的问题了。
答案 8 :(得分:1)
你应该看看Git而不是SVN。这是一款超快速且功能强大的DVCS。它不像SVN那样用户友好,但它在这方面有所改进,而且 难以学习。
答案 9 :(得分:1)
CVS(并行版本系统)和SVN(SubVersioN)是两个版本控制文件系统,由正在单个项目中进行协作的团队广泛使用。这些系统使协作者可以跟踪所做的更改,并知道谁在开发哪个以及是否应将分支应用于主干。 CVS是两者中比较老的版本,它已成为很多人的标准协作工具。 SVN较新,它引入了许多改进来满足大多数人的需求。
答案 10 :(得分:0)
您也可以选择仅将最新代码从CVS迁移到SVN并冻结当前的CVS仓库。这将使迁移变得更容易,您也可以在旧的CVS仓库中构建旧版本。
答案 11 :(得分:0)
嗯,我觉得有些事情让人觉得很棒。
使用cvs2svn可以在几个小时内轻松完成迁移。