我们已经建立了一个变更集传播机制,但它依赖于捆绑和解绑新的变更集。如果我们要使用changegroup
钩子,那么它会导致循环行为,因为钩子是在拉、推或解绑期间运行的。我们需要的是在提交之后完成同步,commit
钩子非常适合,但在push之后也是如此。
请注意,post-push
钩子不是答案,因为它是在您从该存储库推送到另一个存储库时运行的。基本上,此场景调用 的特殊行为changegroup
,仅当新变更集是推送的结果时才运行。
有没有这样的钩子?
我们已经建立了一个变更集传播机制,但它依赖于捆绑和解绑新的变更集。如果我们要使用changegroup
钩子,那么它会导致循环行为,因为钩子是在拉、推或解绑期间运行的。我们需要的是在提交之后完成同步,commit
钩子非常适合,但在push之后也是如此。
请注意,post-push
钩子不是答案,因为它是在您从该存储库推送到另一个存储库时运行的。基本上,此场景调用 的特殊行为changegroup
,仅当新变更集是推送的结果时才运行。
有没有这样的钩子?
检查钩子的源参数。当bundle
您解开变更组时,serve
当变更集通过 HTTP(S) 或 SSH 进入时,以及push
当它通过推送到本地文件系统上的存储库时进入。
您会发现此参数作为HG_SOURCE
作为外部进程运行的挂钩的环境变量,以及作为source
进程内挂钩的关键字参数。
为了完整起见,这是一个可行的脚本(根据@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