Svn 像Mercurial这样使用分布式源代码控制对一个团队来说值得吗?

Svn 像Mercurial这样使用分布式源代码控制对一个团队来说值得吗?,svn,version-control,mercurial,dvcs,Svn,Version Control,Mercurial,Dvcs,我目前为我的一人软件公司使用Subversion。值得搬到Hg(Mercurial)吗?还是只有多人团队才能实现这些好处?我强烈建议您阅读。这是Hg的一个很好的教程,读了之后你很有可能会被卖掉:-)一个优点是你可以离线工作,就像你在客户处编写代码时没有连接到源代码管理服务器一样。你多久做一次 否则我会坚持使用subversion。如果您需要它们,请学习如何正确使用发行版和功能分支。没有理由因此而转向hg,即使它告诉您subversion有多糟糕;) 几乎任何东西都比使用Subversion IM

我目前为我的一人软件公司使用Subversion。值得搬到Hg(Mercurial)吗?还是只有多人团队才能实现这些好处?

我强烈建议您阅读。这是Hg的一个很好的教程,读了之后你很有可能会被卖掉:-)

一个优点是你可以离线工作,就像你在客户处编写代码时没有连接到源代码管理服务器一样。你多久做一次


否则我会坚持使用subversion。如果您需要它们,请学习如何正确使用发行版和功能分支。没有理由因此而转向hg,即使它告诉您subversion有多糟糕;)

几乎任何东西都比使用Subversion IMO好。我喜欢Mercurial(hg)和DARC,但我最喜欢的还是个人项目(以及共享项目)。使用一个二进制文件和每个存储库一个文件,可以轻松跟踪我的工作、轻松备份、轻松移动等等。此外,内置的wiki允许我将头脑风暴与我的源代码保持在一起,并能够检查我的文档(生成的或其他的)通过内置的服务器访问它可以将我所有的工作放在一个地方,内置的问题跟踪器可以让我保存我已经完成或将来需要完成的工作的运行历史


哦,Windows对于Fossil来说并不是一个二等公民,而对于其他一些我能说出名字的DSCM来说,它是一个二等公民。(我在这里看着你,Git。)

我认为这是值得的,即使对一个人来说也是如此——但我有点偏见,因为我是Mercurial的开发人员:-)即使你从不分支和合并,Mercurial也是对commit和tag等基本操作的更好的颠覆:

  • hgcommit
    :非常快,因此与Subversion相比,您将倾向于进行更细粒度的提交。在Mercurial中,提交也是真正的原子性的,因为我们没有。我认为这是一个优势,但人们显然不同意这一点
  • hg tag
    :指向历史记录中的特定点,而不是
    /tags
    下的副本。Subversion标签的问题在于,副本可能与
    /trunk
    查看特定版本的方式相同,也可能不同。Subversion实际上没有内置标记,在模拟它们的同时,可能会以Mercurial中无法做到的方式出现问题
因为Mercurial非常快,人们使用它的方式与使用Subversion的方式不同。一个很好的例子是
hg-bisect
。您可以使用它查找出现特定错误的第一个修订。它通过二进制搜索工作,在每个步骤中将搜索间隔减半。您当然也可以使用Subversion来实现这一点,但它没有内置的支持,而且速度较慢,因为您需要通过网络与服务器联系


这是Mercurial的另一个非常好的特性。它只允许您提交文件中的部分修改。这很好,因为它允许您进行小型且自包含的提交。

是的。尽管mercurial被命名为“分布式”,但我认为它对于一个单独的开发人员来说特别好。您可以获得与SVN类似的功能(加上许多其他功能),但总体而言,它们工作得更好更快。存储库的设置、备份和维护要容易得多。它的设计目的是允许许多单独的开发人员一起工作,因此在您需要与其他人合作之前,许多功能都是有用的

我最喜欢的优点是简单的复制粘贴备份,以及为即时“沙盒”环境克隆存储库的能力。我有点头脑分散,所以很高兴能够产生一个新的环境,尝试一个想法,并决定是否要将其集成到主代码库中。我可以做到这一点,而不会干扰我原来的工作


当我第一次切换到hg时,我一直觉得“哦……这比svn好得多”。在这一点上,我不会为我自己或一个小团队考虑VSN,只考虑水星、Git或类似的DVCS。(我更喜欢水星)(P>>)PG>从我的经验来看,Git和Myuriar目前更适合开源项目或小团队或单人团队。因此,在你的情况下,我会建议他们。Subversion更适合于需要集中式回购和更细粒度访问控制的大型组织

我建议在单独开发时使用修订控制。使用哪一种并不重要,SVN、Git、Hg等等。原因是它允许您在出现倒退性错误、代码丢失、损坏时回滚,当然还有分支和合并功能(您应该始终在分支中开发,并且只有在新特性/错误经过全面测试后才与主干合并),等等。所有这些都是可以做到的(及更多)如果没有版本控制系统,您将无法利用它。

有可能对第一章的颠覆攻击内容有一点保留。我在那里看到过,三个开发人员试图重新整合一个分支整整一周。但这是我们的错,hg也不能将其合并回来。我们应该学会如何重新整合正确使用发布和错误修复分支(顺便说一句,hg也是如此!),然后svn就可以(几乎)和hg一样工作了。虽然hginit是最好的教程之一,但它确实让我相信mercurial并不是我们公司svn的好替代品。我认为hginit缺少的一件事是“hg分支”。它解释了标记和错误“通过克隆进行分支”,但它没有解释如何使用“hg branch”在repo内创建分支。也许我遗漏了什么,但当我在服务器上运行hg时,我不能(或不想)每次有人想要创建功能分支时都必须创建服务器端克隆并配置权限。使用“hg分支”似乎是hg唯一可行的解决方案