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

时间:2010-10-27 08:38:08

标签: python mercurial python-import mercurial-hook

我有一个名为precommit_bad_branch的钩子函数,它导入hook_utils。通过提交调用precommit_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

1 个答案:

答案 0 :(得分:2)

C:\workspaces\hg_hooks目录放在PYTHONPATH中,您就可以写

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

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

import hook_utils

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

或者,您可以从sys.path修改next_hooks.py,也许可以使用以下代码修改import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) import hook_utils

{{1}}