Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们最终能在公司软件中使用DVCS吗?SVN仍然是一个';必须有';为了发展?_Svn_Git_Version Control_Mercurial - Fatal编程技术网

我们最终能在公司软件中使用DVCS吗?SVN仍然是一个';必须有';为了发展?

我们最终能在公司软件中使用DVCS吗?SVN仍然是一个';必须有';为了发展?,svn,git,version-control,mercurial,Svn,Git,Version Control,Mercurial,Git/Mercurial已经变得越来越流行。我看过很多文章将SVN与Git/Mercurial进行比较,但我想知道是否真的有理由继续使用SVN。现在似乎有很多Git/Mercurial工具可以帮助推广其企业应用 是否有任何理由仍然使用SVN?Mercurial/Git最终准备好被公司采用了吗?我不知道有什么内在原因喜欢集中化的风投,有很多外在因素,如遗留系统、管理惯性、学习曲线等 DVCS在很大程度上证明了自己是“更好的捕鼠器” 对于单个开发人员来说,它被认为更好吗 如果有什么区别的话,Sub

Git/Mercurial已经变得越来越流行。我看过很多文章将SVN与Git/Mercurial进行比较,但我想知道是否真的有理由继续使用SVN。现在似乎有很多Git/Mercurial工具可以帮助推广其企业应用

是否有任何理由仍然使用SVN?Mercurial/Git最终准备好被公司采用了吗?

我不知道有什么内在原因喜欢集中化的风投,有很多外在因素,如遗留系统、管理惯性、学习曲线等

DVCS在很大程度上证明了自己是“更好的捕鼠器”

对于单个开发人员来说,它被认为更好吗

如果有什么区别的话,Subversion对单个开发人员来说更糟糕(设置起来更麻烦)


但继续使用SVN的一个很好的理由是惯性。如果SVN对您的项目(或在您的公司)运行良好,则无需经历切换的痛苦。教每个人使用新工具(和新工作流程)可能会涉及一些培训成本,但没有真正的好处。

我可以看出,如果您长期使用SVN,您可能会继续使用它的原因。特别是在一家小公司或编码圈中,从SVN到git或Mercurial的转换,当您可能没有使用它们的任何更强大的功能时,可能会使您不愿意进行切换。正如Thilo所指出的,一家使用SVN的大公司将发现这种变化是巨大的

此外,我认为SVN仍然有is的位置,特别是在教学修订控制方面。但这是我在大学里学习SVN而不是自学git的个人经验,所以我的观点并不客观

也就是说,如果您是从零开始创建存储库,我想不出任何情况下您可能会认为SVN是绝对必要的。也许在处理遗留系统时


或遗留用户;)

Subversion与Apache的集成非常好

我认为Subversion仍然比Mercurial和Git更适用于大文件,如媒体资产、Photoshop文件、After Effects composites等。我记得Linus Torvalds提到大文件是Git中为数不多的潜在问题之一。Mercurial有一些扩展用于在存储库之外存储大型文件。因此,在这种情况下,它们似乎都会出现性能下降和/或其他问题


另一方面,Subversion正被当前的应用程序使用。我不认为他们使用它来存储渲染帧,因为每个渲染过程至少需要几GB的数据。但是,尽管如此,对于所有3d场景、对象、装备、纹理和脚本,这仍然是一个包含许多大型文件的大型存储库。

如果集中式模式是理想的,Subversion是理想的


其中一种情况是在写论文时。只保留一份每个人都从中获取的母版就更有意义了。我们不想创建分支或标记。我们只想跟踪谁做出了改变,然后传播给所有作者。

一方面,SVN集成(与IDE、框架、Wiki等)非常成熟,它的GUI和代码浏览器也非常成熟(即使像Git和Mercurial progress这样的DVC每天都在进步)

另一方面,在企业环境中引入DVCS仍然不是一项简单的任务:

  • (在安全和访问控制、访问管理和限制方面)
  • 这个,有很多
  • 您确实需要,而不是依赖于SVN集中式

需要明确的是,使用DVCS是一个非常有效的选择:

  • 对于新项目,其中开发人员不受遗留工具或流程的束缚
  • 尤其是当开发人员在地理位置上不在同一个地方时(通常是开源开发的情况,这就是为什么在那里主要使用DVC)
StackOverflow(非开源项目)正在使用Mercurial(请参阅)。
他们从SVN迁移到DVCS:

  • 部分原因是他们的开发者现在遍布世界各地(!)
  • 另外,因为DVCS的合并功能比SVN更先进。
    (他们需要在SO站点、StackExchange站点V1和V2、区域51等之间维护其代码库的多个并行、略有不同的版本)
    见“”,或“”

  • 对于公司环境(我所在的地方),任何类型的过渡都不是微不足道的,因为它需要:

    • 资金(钱,即使工具是免费的)
    • 支持(这意味着拥有具有适当能力的适当人员)
    • 集成的(使用现有的遗留工具、GUI、IDE,如Visual Studio或许多其他工具,…)
    • 管理的(就通用服务器而言,即使是DVCS)
    • 记录在案(特别是对于具有CVCS(如SVN)背景的用户)
因此,DVC在企业环境中也非常有用:
(见“或”。)

它(即使对于新项目)也不像在较小的结构或开源环境中那样容易实现

真正的问题不是SVN与Git/Mercurial,而是分布式与集中式。在某些情况下,集中化可能会更好,例如在需要严格控制和彻底记录的公司环境中。

我们使用subversion作为数据存储,这对于合并来说非常重要(我们进行硬件开发,设计文件是未记录的二进制格式)。SVN的优点是您可以对文件设置锁,因此只有一个开发人员可以处理一个文件,并且还必须签出t