我的公司使用CVS作为我们的源代码控制的事实标准。然而,我听很多人说SVN更好。
我知道SVN是较新的,但除此之外,我对它的优势不太了解。
我想要的是这两个系统的简明比较,指出在Java/Eclipse开发环境中每个系统的优缺点。
我的公司使用CVS作为我们的源代码控制的事实标准。然而,我听很多人说SVN更好。
我知道SVN是较新的,但除此之外,我对它的优势不太了解。
我想要的是这两个系统的简明比较,指出在Java/Eclipse开发环境中每个系统的优缺点。
CVS只能基于文件进行修改跟踪,而SVN则以整个提交作为一个新版本进行跟踪,这意味着更容易跟踪您项目的历史。再加上现代所有源代码控制软件都使用版本概念,因此从SVN迁移要比从CVS迁移容易得多。
同时还有原子提交问题。虽然我只遇到过一次,但在CVS中可能会发生2个人一起提交并相互冲突,导致丢失一些数据并使客户端处于不一致状态。如果早期检测到这些问题,则不是什么大问题,因为您的数据仍然存在于某个地方,但在紧张的环境下可能会很痛苦。
最后,现在已经没有太多围绕CVS开发的工具了。虽然像Git或Mercurial这样的新工具确实还没有足够的工具,但SVN已经在任何系统上有着相当大的应用基础。
编辑2020:说真的,这篇答案已经12年了。忘记SVN,像其他人一样使用Git吧!
许多比较之一:
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
相比CVS,SVN有三个主要优点:
《Subversion书籍》有一个附录详细介绍了与CVS的重要区别,这可能有助于您做出决定。这两种方法或多或少是相同的想法,但SVN是专门设计来修复CVS中长期存在的缺陷,因此理论上,SVN将始终是更好的选择。
不要忽视的一件事是生态系统。我曾在一个CVSNT商店工作,发现越来越多的开源工具默认支持SubVersion。
CVS(Concurrent Versions System)和SVN(SubVersioN)是两种版本控制文件系统,广泛用于协作开发的团队。这些系统允许协作者跟踪所做的更改,并知道谁在开发哪个分支以及是否应将分支应用于主干。CVS是其中较早的一个,它一直是许多人的标准协作工具。SVN要新得多,并引入了许多改进,以满足大多数人的需求。
你应该看看 Git,而不是SVN。 Git是一个极快速且功能强大的分布式版本控制系统。虽然它不像SVN那么用户友好,但在这方面它正在改进,并且学习起来并不是那么难。