我试图让一个Mercurial进程内挂接在Windows上运行。
问题不是如何编写钩子(我想使用现有的一个,在这种情况下BugTracker.Net的钩子为Mercurial集成 - 我没有找到该文件的直接链接,但你可以看到它,如果你下载BT.net here,它在“mercurial”子文件夹中)。
问题是如何告诉Mercurial运行它。使Mercurial进程内挂接在Windows上运行
我花了相当一段时间阅读文档,但我现在卡住了。
(它可能会更容易与一定的Python知识 - 我没有)
我知道我必须在hgrc文件(在我的存储库的.hg文件夹中)插入一行。
这里有一个例子in the HG Book看起来像这样:
[hooks]
commit.example = python:mymodule.submodule.myhook
还有的在Mercurial site另一个例子,它看起来像这样:
[hooks]
changegroup = /path/to/changegrouphook
现在,我希望有一个“进入”挂钩,所以至少我知道我必须这样做:
[hooks]
incoming.btnet = X
该pr问题是找出“X”。
文件名是hg_hook_for_btnet.py和文件中,有一条线,看起来像这样:
def debug_out(s):
我想这就是“功能”本身的名称。
所以,我行需要是这个样子:
[hooks]
incoming.btnet = python:hg_hook_for_btnet.debug_out
但是这给了我一个错误信息[错误2]没有这样的文件或目录当我推。
我已经尝试了很多不同的变化,但它不起作用,我不知道我在做什么错。
- 我需要python:在开始还是不开始?
- 我需要指定文件扩展名.py吗?
- 我是否需要/path/to/...如Mercurial站点示例中所示(请参阅上文)?
- 如果是,路径的正确语法是什么? (只是C:\ MyRepo \不起作用 - 语法必须在Python不同)
而且,做我把钩子文件到正确的文件夹?
现在,它位于我的存储库的主文件夹中(与.hg文件夹位于同一级别)。
编辑:
马丁,我把它改为这个:
[hooks]
incoming.btnet = python:~c:\HG\MyRepo\hg_hook_for_btnet.py:debug_out
现在,我得到不同的信息:[错误22]无效参数
我想这是因为你提到的repo
和ui
的论点。
那么,这是否意味着钩子脚本被破坏?
(正如我说 - 我不知道Python的东西,这是从open source bugtracker现有的钩子脚本)
编辑2:
对不起,我在关于混乱 - 进程和单独的进程 - 我知道有一个区别,但我认为如果挂钩是用Python编写的,它必须自动进行(原来我错了:-)
好吧,用sy ntax在您编辑的答案中,脚本至少运行。
我已经安装了Python 2.7(在我问这个问题之前已经这样做了),并将脚本中的第一行改为#!C:\Python27\python.exe
。
现在我得到这样的:
running hook incoming.btnet: c:\HG\MyRepo\hg_hook_for_btnet.py
warning: incoming.btnet hook exited with status 1
所以脚本运行,但仍然有一些错误。
这似乎是一个Bugtracker.NET相关的问题,所以我会问在BT.NET邮件列表进一步的建议。
谢谢你的帮助,虽然没有你,我可能甚至不会来这么远!
我编辑了我的问题,参见上文! – 2010-07-22 13:29:42