【问题标题】:What are the advantages of using SVN over CVS?与 CVS 相比,使用 SVN 有什么优势?
【发布时间】:2008-08-04 14:06:48
【问题描述】:

我的公司使用 CVS 作为我们事实上的源代码控制标准。不过,我听很多人说SVN更好。

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

我正在寻找的是对这两个系统进行良好、简洁的比较,并指出每个系统在 Java/Eclipse 开发环境中的优点或缺点。

【问题讨论】:

    标签: svn version-control cvs


    【解决方案1】:

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

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

    最后,围绕 CVS 开发的工具已经不多了。虽然 Git 或 Mercurial 等新的和闪亮的新工具肯定还缺乏工具,但 SVN 在任何系统上都有相当大的应用程序基础。

    EDIT 2020:说真的,这个答案现在已经 12 岁了。忘记 SVN,像其他人一样使用 Git!

    【讨论】:

    • 我想要 git vs subversion 和 git vs mercurial 的相同答案
    • “忘记 SVN,使用 Git”:我不认为这是新旧或使用它的人数的问题,它们是不同的东西
    【解决方案2】:

    众多比较之一:

    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

    【讨论】:

    • 什么是“芬戈芬”?谷歌搜索这个词只会让人更加困惑
    • Fingolfin 和 Ender 只是论坛成员的名字:Behind each "argument" is a list of people who agree that this particular argument is valid.
    【解决方案3】:

    SVN 与 CVS 相比有 3 个主要优势

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

    【讨论】:

      【解决方案4】:

      Subversion 手册中有an appendix 详细说明了与 CVS 的重要区别,这可能会帮助您做出决定。这两种方法或多或少是相同的想法,但 SVN 是专门为修复 CVS 中长期存在的缺陷而设计的,因此,至少在理论上,SVN 将永远是更好的选择。

      【讨论】:

        【解决方案5】:

        我将支持 Eridius 对 Git 的建议,但我会将其扩展到其他 DRCS(分布式修订控制系统),例如 Mercurialbazaar

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

        另一方面,CVS 目前没有为您做什么?从您最初的问题来看,您实际上并没有任何问题,“CVS 很烂,我可以用什么代替?”

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

        【讨论】:

          【解决方案6】:

          不可忽视的一件事是生态系统。我在一家 CVSNT 商店工作,我发现越来越多的开源工具默认支持 SubVersion。

          【讨论】:

            【解决方案7】:

            顺便说一句:CVSNT 支持原子提交

            【讨论】:

              【解决方案8】:

              作为一个在 CVS 和 SVN 之间切换的人(最初我们用 cvs2svn 切换了我们所有的项目,然后决定我们将只在新项目上使用 svn 来进行转换),这里是我们遇到的一些问题有。

              • 合并和分支非常不同,如果您经常分支和合并,除非您在服务器上运行 SVN 1.5,否则必须知道何时分支(这在 Tortoise SVN 对话框中不是很清楚)。 Michael 说分支和合并很直观,我认为在使用 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 上设置分支。如果你在错误的地方开始你的回购,你可以清理,但这会导致混乱。

              【讨论】:

                【解决方案9】:

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

                【讨论】:

                • 您,陛下,应该获得一枚算命勋章。
                【解决方案10】:

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

                【讨论】:

                  【解决方案11】:

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

                  【讨论】:

                    【解决方案12】:

                    嗯,我觉得有几件事让 svn 很棒。

                    1. SVN-Altassian 坩埚组合是一种优越得多的审查和质量检查方法
                    2. 更好地管理冲突和合并
                    3. 结帐、执行提交等显然更快。
                    4. 原子提交问题 - 在 CVS 中一起提交的 2 个人可能会相互冲突,丢失一些数据并使您的代码库处于不一致的状态

                    使用 cvs2svn 可以在几个小时内轻松完成迁移。

                    【讨论】:

                      猜你喜欢
                      • 2010-09-24
                      • 2010-12-27
                      • 2015-04-06
                      • 2013-05-09
                      • 2017-05-29
                      • 2017-11-24
                      • 1970-01-01
                      • 2023-03-25
                      • 1970-01-01
                      相关资源
                      最近更新 更多