2

我们已经使用在 Bitbucket 托管的 Mercurial 一年了,现在团队已经扩展到 7 名开发人员,我决定开始使用带有命名分支的 SCM 策略,即按功能分支。分支可能会存活数天或数月(长话短说)。作为团队负责人,我经常负责合并分支。许多开发人员可能在一个分支上工作,并且很容易看到他们的提交信息,但是我如何才能看到谁创建/关闭了一个分支?另外,一个分支如何变得“不活跃”,我如何查看有关它的详细信息?

更新:使用 Mercurial 1.9.3,我们的一些分支显示为非活动状态。似乎 Mercurial 正在远离使用不活动,但也许我误解了?
$ hg 分支
默认 1538:a145e13ab06a
IIP-628 1510:3e48d51e7757
IIP-98 1528:17a57f033d3b(非活动)

4

1 回答 1

1

第一次提交到分支的作者是创建分支的人。

hg log -r "first(branch('branchname'))"

设置了关闭标志的提交的作者是关闭分支的人。分支机构可能会重新开放,因此可能会有不止一个“关闭者”。

hg log -r "branch('branchname') and closed()"
hg log -r "last(branch('branchname') and closed())"

如果一个分支没有活动的头,即所有变更集都已合并到某个其他分支,则该分支是非活动的。您可以构造一个revset查询来返回您想要的特定信息,但通常用于hg heads查看所有磁头,包括非活动磁头。

hg heads
hg heads --closed

请注意,分支可能没有活动的头并且没有被关闭,或者被关闭但关闭的变更集是头(IIRC 只有关闭的变更集的分支是隐式不活动的 - 不是在安装了 Mercurial 的机器上检查)。

因此,如果您对“关闭”的定义是“没有活动的头”,那么您将寻找最后一个合并的变更集,这通常是分支中的最后一个变更集,但可能不是。以下 revset 将返回分支中最后一个关闭或合并的变更集,该变更集也是一个头变更集。

hg log -r "last(branch('branchname') and head() and (closed() or parents(merge())))"
于 2012-12-15T23:08:24.697 回答