Mercurial:保留默认分支“;主动的;

Mercurial:保留默认分支“;主动的;,mercurial,branch,Mercurial,Branch,我将mercurial与命名分支一起使用,请注意,当我创建一个新的默认分支时,默认分支被标记为非活动分支。例如: C:\data\solutions\test-repo>hg branches default 0:aeec280e6310 C:\data\solutions\test-repo>hg branch feature-branch marked working directory as branch feature-bran

我将mercurial与命名分支一起使用,请注意,当我创建一个新的默认分支时,默认分支被标记为非活动分支。例如:

C:\data\solutions\test-repo>hg branches
default                        0:aeec280e6310

C:\data\solutions\test-repo>hg branch feature-branch
marked working directory as branch feature-branch

C:\data\solutions\test-repo>hg com -m "created new branch"

C:\data\solutions\test-repo>hg branches
feature-branch                 1:1cb18d7fa554
default                        0:aeec280e6310 (inactive)
这是一个问题,因为我们的部署系统显示了活动的命名分支,可以从中部署

如何使默认分支保持“活动”?

在Mercurial项目中,“活动”和“非活动”分支的概念是我们正在远离的。问题很简单,分支可以在两种状态之间来回翻转,或多或少是随机的,而且在不方便的时候——正如您刚才看到的

相反,我们现在关注的是“开放”与“封闭”。这是一个明确的概念:要关闭分支头,您需要

$ hg update feature-branch
$ hg commit --close-branch -m "passes all tests, ready for merging"
这将添加一个特殊的变更集,将分支标头标记为已关闭。当分支上的所有头都关闭时,它认为已关闭的分支本身将从
hg分支
中消失。我建议合并前先关闭


因此,我建议您将部署系统更改为显示开放分支(
hg分支
),而不是显示活动分支(
hg分支--活动的
)。

非活动仅表示它没有头

在您的案例中,图表如下所示:

default:        0 -\
feature-branch:     \- 1 --- *
*
表示“工作目录”

当您在功能中进行更多修复时(如节点2和3),这将是一个方面:

default:        0 -\
feature-branch:     \- 1 --- 2 --- 3 ---- *
如果要将
功能分支
集成到
默认
中,只需更新到
默认

default:        0 -\--------------------- *
feature-branch:     \- 1 --- 2 --- 3
然后将
功能分支
合并到
默认

default:        0 -\-------------------/- *
feature-branch:     \- 1 --- 2 --- 3 -/
它显示为“非活动”并不意味着您不能使用它。例如,您的“部署脚本”可以有一个
hg update--clean default
,即使它显示为“非活动”,也可以完美地工作

Inactive只意味着它没有头。没有其他。合并后,它将变为活动的,它将成为
功能分支
,该分支将变为“Inactive”


不要介意它的活动/非活动状态,只要正常使用它。

但这如何保持默认的活动状态?在我看来,在创建命名分支后,您必须更新到默认状态,并创建一个“虚拟”分支提交,否则默认分支将被标记为不活动。@mslot:我建议使用关闭/打开而不是活动/不活动。忘记关于非活动分支的一切,转而关注关闭的分支。要重新打开分支,您需要在标记其已关闭的更改集之后进行提交-这通常不是问题,因为您要重新打开分支,因为您要提交该分支上的某些实际更改。对于指南a+1,虽然这是一个很好的例子,表明分支被认为是不活动的,但说“没有头”是误导,因为有头。在这种情况下,功能分支的负责人是3:
hg heads功能分支
将对此进行确认。相反,它是一个业务规则(不同于“无头”),通过该规则,
hg branchs
确定处于[处于]活动状态。规则是这样的:当一个命名分支的所有头的所有子级都属于另一个命名分支(如图所示合并后),则该分支被视为非活动。在同一命名分支上创建新头(例如在名称分支上添加提交)会立即违反规则,并且至少会在瞬间再次激活。