如何从Mercurial Input或Changeset钩子访问提交消息

时间:2011-11-03 18:47:13

标签: python mercurial hook

我想为Mercurial编写一个钩子来执行以下操作,我很难开始。:

  • 在中央仓库上运行,并在按下变更集时执行(我认为我应该使用“输入”或“更改组”钩子)
  • 在每个提交消息中搜索格式为“issue:[0-9] *”
  • 的字符串
  • 找到IF字符串,调用Web服务,并提供问题编号,提交消息和已更改的文件列表

因此,对于初学者来说,如何从“input”或“changegroup”钩子获取每次提交的提交消息?除此之外,关于如何实现其他要点的任何建议也将被指定。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

每次推送都会调用

changegroup一次。如果您想分析每个变更集,那么您希望incoming挂钩(没有input挂钩AFAIK) - 它将针对每个变更集进行调用,其中ID为HG_NODE环境变量。您可以通过以下方式获取提交消息: hg log -r $HG_NODE --template '{desc}'或通过API。

答案 1 :(得分:2)

您将需要使用为存储库中应用的每个变更集调用的incoming挂钩(通过pull,push或unbundle)。

在调用脚本中,可以通过id环境变量访问当前变更集HG_NODE,在python中可以使用os.environ['HG_NODE']访问它。

根据您的操作方式,请查看提供的bugzilla hook作为起点。