3

我有一个名为precommit_bad_branchwhich imports的钩子函数hook_utilsprecommit_bad_branch通过提交调用时,我收到以下错误消息:

error: precommit.branch_check hook raised an exception: No module named hook_utils
abort: No module named hook_utils!

看来我不允许从 拨打hook_utils电话precommit_bad_branch。如果我在不涉及 Mercurial 的情况下明确调用该代码,则该代码可以正常工作。

我的钩子是否可以从另一个文件调用代码?

我的 hgrc 钩子部分如下所示:

[hooks]
precommit.branch_check = python:C:\workspaces\hg_hooks\next_hooks.py:precommit_bad_branch
precommit.debug_code_check = python:C:\workspaces\hg_hooks\common_hooks.py:precommit_contains_debug_code
preupdate.merge_check = python:C:\workspaces\hg_hooks\next_hooks.py:preupdate_bad_merge
4

1 回答 1

2

C:\workspaces\hg_hooks目录放在你的PYTHONPATH,你就可以写了

[hooks]
precommit.branch_check = python:next_hooks.precommit_bad_branch

在您的配置文件中,您也可以这样做

import hook_utils

在任何 Python 文件中,包括该next_hooks.py文件。

或者,您可以修改sys.pathfrom next_hooks.py,可能使用如下代码:

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

import hook_utils
于 2010-10-27T12:03:34.257 回答