我们一直使用在Bitbucket托管的Mercurial一年,现在该团队已经扩展到7位开发人员,我决定开始使用名为分支的每个功能分支的SCM策略。分支机构可能存在数天或数月(长篇故事)。作为团队领导,我经常负责合并分支机构。许多开发人员可能在一个分支上工作,并且很容易看到他们的提交信息,但我怎么能看到谁创建/关闭了分支?此外,分支如何变为“非活动”,如何查看有关该分支的详细信息?
更新:
使用Mercurial 1.9.3,我们的一些分支显示为非活动状态。似乎Mercurial正在逐渐停止使用非活动,但也许我误解了?
$ hg分支
默认1538:a145e13ab06a
IIP-628 1510:3e48d51e7757
IIP-98 1528:17a57f033d3b(无效)
答案 0 :(得分: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())))"