2

我需要相当于git post-receiveMercurial 中的钩子,这样我就可以通知另一个服务已经向存储库进行了推送。

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

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

我暂时不想要的是我当前使用hg incoming钩子实现的行为:我有每个推送的变更集的修订版。

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

编辑:目标是通知另一个服务从存储库中提取,因为新代码已经到达。但我不希望服务拉动推送中的每个变更集

4

1 回答 1

2

基本上,听起来你想使用changegroup钩子。它就像incoming钩子,但只为一组更改触发一次。它为您提供了第一个新变更集的 ID,$HG_NODE但我不确定这是否适合您。

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

我有点不清楚你所说的“最后一个”变更集是指哪个变更集。由于变更集可以一次添加到多个头,最后一个变更集可以在任何分支上,因此对于更新来说不是很有用的信息。

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

但是,如果您真的想知道最后一个变更集的 ID,您可以从挂钩中调用以下命令hg tip --template "{node}":有关hg help tip更多信息,请参阅。

如果你提供了一些关于你想精确地使用这些信息的背景,那么我可以就如何最好地处理这个问题给出更清晰的建议。

于 2012-06-22T08:45:17.020 回答