我对分布式版本控制系统有点陌生,所以我在阅读 Mercurial 手册,我的理解是标签功能可用于标记版本号,例如一个名为 v1.0 的标签和另一个 v1.1 等.
至于分支,它们将用于添加新功能而不会打扰其他开发人员,然后在一切正常后将其与默认分支合并。
那正确吗?
请指教。谢谢。
我对分布式版本控制系统有点陌生,所以我在阅读 Mercurial 手册,我的理解是标签功能可用于标记版本号,例如一个名为 v1.0 的标签和另一个 v1.1 等.
至于分支,它们将用于添加新功能而不会打扰其他开发人员,然后在一切正常后将其与默认分支合并。
那正确吗?
请指教。谢谢。
听起来您主要是从 git 人员那里得到答案,他们也几乎了解 Mercurial。
核心区别在于,在 git 中,分支名称不是变更集的组成部分——它只是变更集现在所在的位置。在 mercurial 中,命名分支的名称永远是它的一部分。这导致对 git 的了解多于对 Mercurial 的了解的人会说以下两种不太正确的事情之一:
hg branches
输出可能会变得非常大。所有这些都在 Steve Losh 的Mercurial 分支指南中得到了很好的阐述,正如 OJ 最初回答的那样(我赞成)。
总之:
当然,任何一种工具都可以以任何一种方式使用——它更多的是关于规范而不是关于“正确”。
阅读以下内容以帮助澄清您的理解(Mercurial 相关):
嗯,这是一个取决于你的观点的问题。在git中,分支有很多用途(即一个是开发)。事实上,git 中的一切都是分支。并且每个分支中可能有不同的标签。
我会推荐阅读这个伟大的教程,因为它解释了很多关于分支和发布的事情:
关于 git 的两个答案正确地同意您的观点,即标签适用于发布,分支适用于新功能,但并没有真正解释原因。
一个 git 标签永久指向一个给定的提交。这意味着它真的只适用于标记一个里程碑,如发布。
另一方面,可以签出并提交一个分支,这意味着该分支将前进以指向该新提交。这使得分支成为git 的工作方式;每当您进行提交时,您都希望签出适当的分支,以便记录您的进度。正如您所说,这包括新功能,还包括任何其他工作。
Mercurial 中的情况大体相似,尽管分支不是那么轻量级,因此您不会像在 git 中那样频繁地进行分支。并且标签的处理方式略有不同,但仍然适用于标记发布。
我不是 Mercurial 用户(我使用 Git),但就 Git 工作流程而言,你已经死定了。在与主分支合并之前,通常由一名开发人员使用分支来处理自己的错误修复/功能。
标签通常在主分支上用于标记里程碑,通常是发布。这使您可以轻松地恢复到该状态,而无需使用提交编号(在 Git 中是十六进制数字的长字符串,不确定 Mercurial 是如何工作的)。
加里