代码之家  ›  专栏  ›  技术社区  ›  shsteimer

与cvs相比,使用svn有什么好处?

  •  57
  • shsteimer  · 技术社区  · 16 年前

    我的公司正在使用cvs作为我们实际的源代码控制标准。但是,我听过很多人说SVN更好。

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

    我正在寻找的是这两个系统的一个很好的简洁的比较,注意到在Java/Eclipse开发环境中的每一个优点或缺点。

    12 回复  |  直到 6 年前
        1
  •  59
  •   Vincent Robert    9 年前

    cvs只跟踪一个文件一个文件的修改,而svn跟踪整个提交作为一个新的修订,这意味着更容易跟踪项目的历史。添加一个事实,即所有现代的源代码管理软件都使用修订的概念,因此从SVN迁移比从CVS迁移要容易得多。

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

    最后,不再有许多工具是围绕cvs开发的。虽然像Git或Mercurial这样的新的、闪亮的工具显然还没有工具,但是SVN在任何系统上都有相当大的应用程序基础。

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

        2
  •  19
  •   Michael Stum    16 年前

    众多比较之一:

    http://wiki.scummvm.org/index.php/CVS_vs_SVN

    现在,这是非常具体的项目,但很多东西适用于一般。

    亲颠覆:

    • 支持版本化重命名/移动(不适用于cvs):fingolfin,ender
    • 本机支持目录:可以删除它们,并对它们进行版本控制:fingolfin、ender
    • 文件属性已版本化;不再是“可执行位”hell:fingolfin
    • 总的修订号使得构建版本控制和回归测试更加容易:ender、fingolfin
    • 原子承诺:fingolfin
    • 直观的(基于目录的)分支和标记:fingolfin
    • 更简单的钩子脚本(提交前/提交后等):sumthinwicked(提交后我将其用于doxygen)
    • 防止意外提交冲突文件:咸马、fingolfin
    • 支持自定义“diff”命令:fingolfin
    • 离线差异,它们是即时的:sev
        3
  •  14
  •   lubos hasko    16 年前

    与cvs相比,svn有3个主要优势

    • 它更快
    • 支持二进制文件的版本控制
    • 并添加事务提交(全部提交或不提交)
        4
  •  7
  •   David Wengier    16 年前

    这本颠覆性的书 an appendix 这详细说明了与简历的重要区别,这可能有助于你做出决定。这两种方法或多或少是相同的想法,但SVN是专门为修复CVS中的长期缺陷而设计的,因此,至少在理论上,SVN始终是更好的选择。

        5
  •  4
  •   Robert P    16 年前

    我会附议Eridius对Git的建议,但我会将其扩展到其他DRC(分布式修订控制系统),如 Mercurial bazaar .

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

    另一方面,什么 简历现在对你有用吗?从你最初的问题来看,你其实没有什么“简历很烂,我可以用什么来代替?”

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

        6
  •  4
  •   engtech    16 年前

    一个不容忽视的是生态系统。我在一家cvsnt商店工作,我发现越来越多的开源工具默认支持Subversion。

        7
  •  2
  •   David Sykes    16 年前

    btw:cvsnt支持原子提交

        8
  •  2
  •   Kris Erickson    16 年前

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

    • 合并和分支是非常不同的,如果您经常进行分支和合并,除非您的服务器上运行了SVN 1.5,否则必须知道您何时进行了分支(在Tortoise SVN对话框中不太清楚)。迈克尔说,分支和合并是直观的,我认为在使用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
  •  1
  •   Lily Ballard    16 年前

    你应该看看 Git 而不是SVN。这是一个数字视频控制器,它的燃烧速度快,功能强大。它不像SVN那样用户友好,但是在这方面它正在改进,而且它不是 那个 难学。

        10
  •  1
  •   vidy    6 年前

    cvs(并发版本系统)和svn(Subversion)是两个版本控制文件系统,在一个项目上进行协作的团队通常使用它们。这些系统允许合作者跟踪所做的更改,并知道谁在开发哪个以及分支是否应该应用于主干。cvs是两者中年龄较大的一个,它已经成为许多人的标准协作工具。SVN更新了很多,它引入了很多改进来满足大多数人的需求。

        11
  •  0
  •   webwesen    16 年前

    您也可以选择只将最新的代码从cvs迁移到svn,并冻结当前的cvs repo。这将使迁移更容易,并且您也可以在旧的cvs repo中构建遗留版本。

        12
  •  0
  •   richie    8 年前

    好吧,一些我觉得让SVN很棒的事情。

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

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