在 Mercurial 中检测一个关闭的分支

Detect a closed branch in Mercurial

我正在尝试在我的 Puppet 存储库中编写一个 post-commit 挂钩,其工作方式类似于 this git-based setup。我已经准备好一些基础知识,例如检测何时创建新分支并更改到正确的目录以使用正确的分支名称进行克隆(或拉取,如果存在),但我想添加一些清理当一个分支关闭时。因此,我试图找出如何通过变更集检测分支是否已关闭,而不是依赖提交消息。也许我错过了它,但我没有看到任何明显的 "this commit was to close this branch" - 我也许可以尝试检测一个空的变更集,但这似乎可能有误报。

这是一个检测关闭分支的钩子示例:

from mercurial import context, ui
def run(ui, repo, node, **kwargs):
    ctx = repo[node]
    for rev in xrange(ctx.rev(), len(repo)):
        ctx = context.changectx(repo, rev)
        parent1 = ctx.parents()[0]
        if parent1 != None and parent1.extra().get('close'):
            ui.warn("Commit to closed branch!\n")
            return True
    return False

挂钩可以 运行 在 pretxnchangegroup 模式下(当从外部仓库添加变更集时检查)与以下 hgrc

[hooks]
pretxnchangegroup.closed_branch = python:/path/to/closed_branch.py:run