克隆是否是Mercurial中推荐的分支方式?

时间:2013-08-06 22:18:40

标签: git version-control mercurial dvcs

在这位article作者中说:

  

我天真地认为生活在完全不同的分支   目录已成为过去。他们如何SVN。我不敢想象   过着我的生活,让当地的克隆人有效地长期处理   跑分行。这本书字面上说:

     
    

“在大多数情况下,隔离存储库中的分支是正确的     的方法“。

  
     嗯,不,谢谢。事实证明,我越是进入分支   东西,我越了解为什么他们主张你克隆到   科。一切都在一条轨道上 - 你无法做出贡献   然后轻松地将它留在那里工作以后再忽略它   是的,这是我主要用于分支的。就像Mercurial一样   单轨调音台......

等等。

在其他来源中,我现在无法找到链接,我读到,Mercurial开发人员使用克隆进行分支。
对我来说很奇怪,在Mercurial中,分支是“一流”的概念 - 分支可以通过非标题修订的提交来创建 - 克隆线性存储库是主流的分支方式。
这是真的吗?或者说它可能是真的吗?这个问题有什么历史?

PS
我记得我注意到Hg开发人员使用克隆的话 - 它很受欢迎Steve Losh's article

  

我个人不喜欢这种方法而且不使用它。其他人呢   但是,理解它是很好的(Mercurial本身使用它   模型)。

3 个答案:

答案 0 :(得分:5)

您链接的文章是在2008年写的,也就是5年前,那时它是不准确的。史蒂夫的文章,你链接:

http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/

要好得多,虽然它是在2009年写的,但它已经定期更新。它清楚地表明Mercurial可以执行git样式的分支(它称为“书签”),或克隆作为分支,或命名分支(git缺乏)或匿名分支(git缺乏)。

Mercurial开发人员自己将各种类型用于各种目的,如下所述:https://www.mercurial-scm.org/wiki/StandardBranching

大致归结为:

  • stablerelease
  • 的命名分支
  • 各个功能的书签(git-style)分支
  • 克隆用于不同的访问组(工作人员与亚马逊的回购)

答案 1 :(得分:0)

我现在正在阅读本Mercurial-book中引用的Bryan O'Sullivan article on GitHub并且发现了这句话:

  

在大多数情况下,隔离存储库中的分支是正确的方法。

GitHub的作者只是从上下文中删除 - 在书中它没有“克隆是一种多变的分支方式”的意思,Sullivan只是说:

  

简单易懂;所以很难犯错误。

(对于我所理解的新手),在下一段他开始描述更高级的分支技术:

  

如果您更喜欢“超级用户”类别(以及您的合作者)   也是),有一种处理分支的替代方法   可以考虑。

顺便说一下,这句话的出现名为“管理版本和分支开发

很明显,Mercurial-book作者中的短语并不意味着Chacon在他关于GitHub的文章中的解释。 Chacon完全不正确。

答案 2 :(得分:0)

简短回答:否。

长答案:当您根本不需要分支时,克隆很方便。就像在快速修补程序上工作一样,修复很少的文档错误等。克隆是直观且快速的,不需要你阅读一本书或记住你在做什么分支。这种方法通过将分支名称记录为当前工作目录来释放大脑中的一个插槽。

因此,对于简单的情况,你不需要分支(你的克隆中仍会产生anonymous分支,迟早必须合并到主线,但没有人关心)。

克隆是一个很好的入口点,很快您就可以为高级概念做好准备了。但是根据我在Bitbucket上的~50个存储库的经验,我几乎不记得任何分支,尽管每个人都知道分支机构便于维护和修复经过时间考验的稳定版本。

因此,如果您的项目需要高级分支策略,您需要弄清楚自己,我唯一可以提供的建议是阅读David Vega的DVCS branching (with Mercurial)演示文稿,其中包含价值千言万语的图片。