4

我们已经建立了一个变更集传播机制,但它依赖于捆绑和解绑新的变更集。如果我们要使用changegroup钩子,那么它会导致循环行为,因为钩子是在拉、推或解绑期间运行的。我们需要的是在提交之后完成同步,commit钩子非常适合,但在push之后也是如此。

请注意,post-push钩子不是答案,因为它是在您该存储库推送到另一个存储库时运行的。基本上,此场景调用 的特殊行为changegroup,仅当新变更集是推送的结果时才运行。

有没有这样的钩子?

4

2 回答 2

3

检查钩子的源参数。bundle您解开变更组时,serve当变更集通过 HTTP(S) 或 SSH 进入时,以及push当它通过推送到本地文件系统上的存储库时进入。

您会发现此参数作为HG_SOURCE作为外部进程运行的挂钩的环境变量,以及作为source进程内挂钩的关键字参数。

于 2012-01-18T23:13:37.043 回答
2

为了完整起见,这是一个可行的脚本(根据@MartinGeisler的回答)。让我们称之为pushhook.py

def pushhook(ui, repo, source=None, **kwargs):
    if source == 'push':
        # Perform push-only operations here

hgrc看起来像:

[hooks]
changegroup.push = python:.hg/pushhook.py:pushhook
于 2012-06-19T16:42:01.770 回答