git - Hg 相当于 git post-receive hook

标签 git mercurial hook mercurial-hook

我需要 Mercurial 中相当于 git post-receive 的钩子(Hook),这样我就可以通知另一个服务已将推送推送到存储库。

我的钩子(Hook)中需要的很简单:最后一个变更集的变更集修订版。

当然我知道与git的区别在于ref不会被命名,并且可以有多个头推送到存储库。我可能对此感到满意。

我目前不想要的是我当前使用 hg传入 钩子(Hook)实现的行为:我对每个推送的变更集都有修订。

那么,总而言之,hg 收到上次推送到存储库的提交的通知的最佳方式是什么?

编辑:目标是通知另一个服务从存储库中 pull ,因为新代码已到达。但我不希望服务为推送

中的每个变更集 pull

最佳答案

基本上,听起来您想使用 changegroup Hook 。它类似于 incoming 钩子(Hook),但仅针对更改包触发一次。它为您提供了 $HG_NODE第一个新变更集的 ID,但我不确定这是否适合您。

参见:http://www.selenic.com/mercurial/hgrc.5.html#hooks

我有点不清楚“最后一个”变更集到底指的是哪个变更集。由于变更集可能会同时添加到多个头,最后一个变更集可能位于任何分支上,因此对于更新来说,这并不是非常有用的信息。

如果您想确定自上次推送以来哪些变更集是新的,那么拥有第一个变更集即使不是更好,也同样适合您(因为它允许您在不了解先前推送的情况下识别新的变更集)。

但是,如果您确实想知道最后一个变更集的 ID,可以从 Hook 调用以下命令:hg Tip --template "{node}"。有关详细信息,请参阅 hg 帮助提示

如果您提供一些关于您想要准确使用此信息的背景信息,那么我可以就如何最好地处理该问题提供更明确的建议。

关于git - Hg 相当于 git post-receive hook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11151425/

相关文章:

python - 无法重置/tmp 值以推送 mercurial 更改

mysql - 如何使用 Mercurial 支持 MySQL 表的现状?

Git:从工作树中删除已删除的文件

svn - 如何在不同的源代码控制系统下开发 merge 文件的陷阱测试和性能测试?

Git 远程命令返回 fatal error : Invalid refspec +refs/heads/*:refs/remotes/:origin/*

erlang - ejabberd 钩子(Hook)的文档?

c++ - 使用 C++ 和 EasyHook 注入(inject) x64 进程 Hook x86-DLL 的 x64-DLL 失败

c++ - 如何在不注入(inject)任何 DLL 的情况下单击窗口时返回窗口句柄?

git:如何(严重地)重新排序提交序列

git - 保护 Visual Studio Team Services 中的 Git 分支,就像在 GitHub 中一样