【发布时间】:2008-08-04 14:06:48
【问题描述】:
我的公司使用 CVS 作为我们事实上的源代码控制标准。不过,我听很多人说SVN更好。
我知道 SVN 比较新,但除此之外,我不熟悉它的好处。
我正在寻找的是对这两个系统进行良好、简洁的比较,并指出每个系统在 Java/Eclipse 开发环境中的优点或缺点。
【问题讨论】:
标签: svn version-control cvs
我的公司使用 CVS 作为我们事实上的源代码控制标准。不过,我听很多人说SVN更好。
我知道 SVN 比较新,但除此之外,我不熟悉它的好处。
我正在寻找的是对这两个系统进行良好、简洁的比较,并指出每个系统在 Java/Eclipse 开发环境中的优点或缺点。
【问题讨论】:
标签: svn version-control cvs
CVS 仅跟踪逐个文件的修改,而 SVN 将整个提交作为新修订跟踪,这意味着更容易跟踪项目的历史记录。加上所有现代源代码控制软件都使用修订的概念,因此从 SVN 迁移比从 CVS 迁移要容易得多。
还有原子提交问题。虽然我只遇到过一次,但在 CVS 中一起提交的 2 个人可能会相互冲突,丢失一些数据并使您的客户端处于不一致的状态。如果及早发现,这些问题并不严重,因为您的数据仍然存在于某个地方,但在压力大的环境中可能会很痛苦。
最后,围绕 CVS 开发的工具已经不多了。虽然 Git 或 Mercurial 等新的和闪亮的新工具肯定还缺乏工具,但 SVN 在任何系统上都有相当大的应用程序基础。
EDIT 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
【讨论】:
Behind each "argument" is a list of people who agree that this particular argument is valid.
SVN 与 CVS 相比有 3 个主要优势
【讨论】:
Subversion 手册中有an appendix 详细说明了与 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 可以在几个小时内轻松完成迁移。
【讨论】: