我已经有一段时间了,我似乎无法让它工作。
根据 Kallithea 文档:
To add another custom hook simply fill in the first textbox with <name>.<hook_type> and the second with the hook path. Example hooks can be found in kallithea.lib.hooks.
所以我的第一次尝试是在 hooks.py 中添加一个新方法。基本上为了测试我想阻止所有推送到回购的钩子。所以我将使用 pretxnchangegroup 并返回非 0 非假值,如 Mercurial 文档所述
A hook that executes successfully must exit with a status of zero if external, or return boolean “false” if in-process. Failure is indicated with a non-zero exit status from an external hook, or an in-process hook returning boolean “true”. If an in-process hook raises an exception, the hook is considered to have failed.
所以我这样做了:
def myhook(ui, repo, **kwargs):
return True
我在 Kallithea 钩子选项中将钩子添加到 GUI 中:
pretxnchangegroup <=> python:kallithea.lib.hooks.myhook
然而,这失败了,因为由于某种原因找不到该方法
abort: pretxnchangegroup hook is invalid ("kallithea.lib.hooks.myhook" is not defined)
所以我尝试将它放在另一个文件中(在 hooks.py 所在的同一个“lib”文件夹中)。创建了一个名为 canpush.py 的文件并在那里添加了相同的方法。我更改了挂钩路径以定位新文件名:
pretxnchangegroup <=> python:kallithea.lib.hooks.myhook
但是钩子不会触发,我可以毫无问题地推送到我的仓库。我计划将来更改实际的钩子实现,将允许推送,但首先我需要使用 Kallithea 获得任何钩子功能。
我在这里做错了什么?
此外,如果有人知道如何在 Kallithea 中使用单个 repo 中的 hgrc 设置,那么一个例子会很棒。原来的问题在这里。