[英]What are the advantages of using SVN over CVS?
我的公司使用 CVS 作为我们事实上的源代码控制标准。 但是,我听到很多人说 SVN 更好。
我知道 SVN 较新,但除此之外,我不熟悉它的好处。
我正在寻找的是对两个系统的良好、简洁的比较,并指出每个系统在 Java/Eclipse 开发环境中的优点或缺点。
CVS 仅在逐个文件的基础上跟踪修改,而 SVN 将整个提交作为新修订进行跟踪,这意味着更容易跟踪项目的历史记录。 添加一个事实,即所有现代源代码控制软件都使用修订的概念,因此从 SVN 迁移比从 CVS 迁移要容易得多。
还有原子提交问题。 虽然我只遇到过一次,但两个人在 CVS 中一起提交可能会相互冲突,丢失一些数据并使您的客户端处于不一致的状态。 如果及早发现,这些问题并不严重,因为您的数据仍在某处,但在压力大的环境中可能会很痛苦。
最后,围绕 CVS 开发的工具已经不多了。 虽然像 Git 或 Mercurial 这样的新工具肯定还缺乏工具,但 SVN 有一个基于任何系统的相当大的应用程序基础。
编辑 2020 年:说真的,这个答案现在已经 12 岁了。 忘记 SVN,像其他人一样使用 Git!
许多比较之一:
http://wiki.scummvm.org/index.php/CVS_vs_SVN
现在这是非常特定于那个项目的,但是很多东西一般都适用。
专业颠覆:
- 支持版本化重命名/移动(CVS 不可能):Fingolfin、Ender
- 本机支持目录:可以删除它们,并且它们是版本化的:Fingolfin、Ender
- 文件属性是版本化的; 不再有“可执行位”地狱:Fingolfin
- 总体修订号使构建版本控制和回归测试更加容易:Ender、Fingolfin
- 原子提交:Fingolfin
- 直观(基于目录)分支和标记:Fingolfin
- 更简单的钩子脚本(提交前/提交后等):SumthinWicked(我在提交后将它用于 Doxygen)
- 防止意外提交冲突文件:Salty-horse、Fingolfin
- 支持自定义“diff”命令:Fingolfin
- 离线差异,它们是即时的:sev
与 CVS 相比,SVN 有 3 个主要优势
Subversion 书有一个附录,详细说明了与 CVS 的重要区别,这可能会帮助您做出决定。 这两种方法或多或少是相同的想法,但 SVN 是专门为修复 CVS 中长期存在的缺陷而设计的,因此,至少在理论上,SVN 永远是更好的选择。
不容忽视的一件事是生态系统。 我在 CVSNT 商店工作,我发现越来越多的开源工具默认支持 SubVersion。
顺便说一句:CVSNT 支持原子提交
作为一个在 CVS 和 SVN 之间切换的人(最初我们用 cvs2svn 切换了我们所有的项目,然后决定我们只在新项目上使用 svn 进行转换),这里是我们遇到的一些问题。
你应该看看Git而不是 SVN。 这是一款速度极快且功能强大的 DVCS。 它不是用户友好为SVN,但它提高了在这方面,它并不难学。
CVS(并发版本系统)和 SVN(SubVersioN)是两个版本控制文件系统,在单个项目上进行协作的团队经常使用它们。 这些系统允许协作者跟踪所做的更改,并知道谁在开发哪个分支以及是否应将分支应用于主干。 CVS 是两者中较老的一个,它已经成为很多人的标准协作工具。 SVN 更新很多,它引入了很多改进来满足大多数人的需求。
您也可以选择仅将最新代码从 CVS 迁移到 SVN 并冻结您当前的 CVS 存储库。 这将使迁移更容易,您还可以在旧的 CVS 存储库中构建旧版本。
好吧,我觉得有几件事让 svn 很棒。
使用 cvs2svn 可以在几个小时内轻松完成迁移。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.