4

我对分布式版本控制系统有点陌生,所以我在阅读 Mercurial 手册,我的理解是标签功能可用于标记版本号,例如一个名为 v1.0 的标签和另一个 v1.1 等.

至于分支,它们将用于添加新功能而不会打扰其他开发人员,然后在一切正常后将其与默认分支合并。

那正确吗?

请指教。谢谢。

4

5 回答 5

9

听起来您主要是从 git 人员那里得到答案,他们也几乎了解 Mercurial。

核心区别在于,在 git 中,分支名称不是变更集的组成部分——它只是变更集现在所在的位置。在 mercurial 中,命名分支的名称永远是它的一部分。这导致对 git 的了解多于对 Mercurial 的了解的人会说以下两种不太正确的事情之一:

  • 命名分支应该在每个功能的基础上使用——在 Mercurial 中为每个功能使用一个命名分支并没有错,但是由于这些分支名称永远不会消失,您的hg branches输出可能会变得非常大。
  • Mercurial 中的分支不像 git 那样轻量级——Mercurial 中的命名分支并不那么轻量级(它们是永久性的),但这就是为什么它不是功能的规范。Mercurial 中的匿名分支比 git 的命名分支更轻量级,而 Mercurial 中的书签分支与 git 分支完全相同。

所有这些都在 Steve Losh 的Mercurial 分支指南中得到了很好的阐述,正如 OJ 最初回答的那样(我赞成)。

总之:

  • 混帐
    • 发布:标签
    • 特点:树枝
    • 开发线(稳定等):单独的存储库
  • 水银:
    • 发布:标签
    • 特点:书签或匿名分支
    • 发展路线(稳定等):命名分支

当然,任何一种工具都可以以任何一种方式使用——它更多的是关于规范而不是关于“正确”。

于 2010-12-05T03:00:10.777 回答
5

阅读以下内容以帮助澄清您的理解(Mercurial 相关):

于 2010-12-04T20:38:13.507 回答
3

嗯,这是一个取决于你的观点的问题。在git中,分支有很多用途(即一个是开发)。事实上,git 中的一切都是分支。并且每个分支中可能有不同的标签

我会推荐阅读这个伟大的教程,因为它解释了很多关于分支和发布的事情:

http://nvie.com/posts/a-successful-git-branching-model/

于 2010-12-04T20:20:09.467 回答
2

关于 git 的两个答案正确地同意您的观点,即标签适用于发布,分支适用于新功能,但并没有真正解释原因。

一个 git 标签永久指向一个给定的提交。这意味着它真的适用于标记一个里程碑,如发布。

另一方面,可以签出并提交一个分支,这意味着该分支将前进以指向该新提交。这使得分支成为git 的工作方式;每当您进行提交时,您都希望签出适当的分支,以便记录您的进度。正如您所说,这包括新功能,还包括任何其他工作。

Mercurial 中的情况大体相似,尽管分支不是那么轻量级,因此您不会像在 git 中那样频繁地进行分支。并且标签的处理方式略有不同,但仍然适用于标记发布。

于 2010-12-04T21:43:52.620 回答
0

我不是 Mercurial 用户(我使用 Git),但就 Git 工作流程而言,你已经死定了。在与主分支合并之前,通常由一名开发人员使用分支来处理自己的错误修复/功能。

标签通常在主分支上用于标记里程碑,通常是发布。这使您可以轻松地恢复到该状态,而无需使用提交编号(在 Git 中是十六进制数字的长字符串,不确定 Mercurial 是如何工作的)。

加里

于 2010-12-04T20:17:23.283 回答