2010-10-01 166 views
0

已经在commit_hooks.py文件中写入了两个函数,我希望在任何提交持久化之前运行它,但我无法弄清楚如何编写我的hgrc来检测它们。如何编写我的hgrc以便Mercurial检测到我的钩子?

功能标题有:

def precommit_bad_merge(ui, repo, parent1=None, parent2=None, **kwargs): 
... 

def precommit_bad_branching(ui, repo, **kwargs): 
... 

我已经使用这个“guide”试过,但文档是太“男人pagey”对我来说。以下是无效的弃儿。

[hooks] 
precommit = ..\..\mno2\commit_hooks.py 

更新! 重写勾线:

precommit = D:\environments\next\mno2\commit_hooks.py 

使水银检测预提交挂钩,但它总是与状态1由于某种原因退出。

+0

-1失败的第一点[如何问](http://stackoverflow.com/questions/ask-advice)。 – 2010-10-04 19:04:23

+0

除了Linux手册页外,有关Mercurial钩子的文档至少没有说明。事后看来,我应该能够通过阅读指南自己弄清楚,但缺乏例子让我感到困惑。 – MdaG 2010-10-07 12:55:02

回答

2

设置您[hooks]部分是这样的:

[hooks] 
precommit.foo = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_merge 
precommit.bar = python:D:\environments\next\mno2\commit_hooks.py:precommit_bad_branching 

为您所使用的precommit行的语法是外部挂钩,所以这是处理你的Python文件作为一个独立的脚本(我假设它不是因为你正在使用函数签名来处理进程内钩子)。

你可能需要在你的路径中有我的python可执行文件。

欲了解更多信息,请参阅权威指南关于in-process hooks;评论中隐藏了一些有用的信息。

+0

谢谢你的工作很棒! :-)虽然MercurialEclipse插件(我只是拒绝访问),但它在Eclipse中不起作用,但这是另一个问题,可能是由于Eclipse工作区在我的本地计算机上,并且源代码位于远程服务器上。 – MdaG 2010-10-04 07:57:51

0

“人pagey” 文档有有关python钩语法部分:

用于Python钩的语法 如下:

hookname = python:modulename.submodule.callable 
hookname = python:/path/to/python/module.py:callable 

的Python钩的 水银进程中运行。每个钩子被称为 至少有三个关键字参数: 一个ui对象(关键字ui),一个存储库 对象(关键字repo)和一个钩子类型 关键字,告知使用什么样的钩子 。上面列出的 环境变量的参数作为关键字参数传递 ,前缀无HG_ ,名称为小写。

如果Python钩子返回“true” 值或引发异常,则将 视为失败。

相关问题