3

在这篇文章中作者说:

我天真地认为生活在完全不同的目录中的分支已成为过去。他们的SVN如何。我无法想象我的生活是制作本地克隆来有效地处理长期运行的分支。书中字面意思是:

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

嗯,不,谢谢。事实证明,我对分支的东西越多,我就越理解他们为什么提倡你克隆到分支。一切都在一个轨道上——你不能提交一些东西然后轻易地把它留在那里待会儿工作而暂时忽略它,这就是我使用分支的主要目的。这就像 Mercurial 是一个单轨混音器......

等等。

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

ps
我记得我在哪里注意到关于 Hg 开发人员使用克隆的文字 - 这是史蒂夫·洛什 (Steve Losh) 的文章很受欢迎:

我个人不喜欢这种方法,也不要使用它。其他人虽然这样做,所以理解它是件好事(Mercurial 本身使用这个模型)。

4

3 回答 3

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

大致归结为:

  • stable为和命名的分支release
  • 单个功能的书签(git-style)分支
  • 不同访问组的克隆(crew vs. matt's repo)
于 2013-08-07T01:48:55.093 回答
0

我现在正在阅读 Bryan O'Sullivan Mercurial-book ,该书在 GitHub 上的这篇文章中引用并遇到了这句话:

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

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

它的简单性使其易于理解;所以很难出错。

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

如果您更多地属于“高级用户”类别(并且您的合作者也是),那么您可以考虑另一种处理分支的方法。

顺便说一句,这个短语出现的章节名为“管理发布和分支开发

所以很明显,Mercurial 书作者中的这句话与 Chacon 在他在 GitHub 上的文章中的解释没有任何含义。Chacon 是完全不正确的。

于 2013-08-25T22:52:22.110 回答
0

简短的回答:没有。

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

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

克隆是一个很好的切入点,很快您就会为高级概念做好准备。但是根据我在 Bitbucket 上大约 50 个存储库的经验,我几乎记不起任何分支,尽管每个人都知道分支便于维护和修复经过时间证明的稳定版本的错误。

所以你需要弄清楚你自己是否需要为你的项目提供高级分支策略,我能提供的唯一建议是阅读David Vega 的DVCS 分支(使用 Mercurial)演示文稿,其中包含价值千字的图片。

于 2013-09-06T10:56:30.080 回答