我的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!
看起来我不能从 precommit_bad_branch
调用 hook_utils
。如果我不通过 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 个回答
2
import hook_utils
把 C:\workspaces\hg_hooks
这个文件夹放到你的 PYTHONPATH
里,这样你就可以在配置文件中写
[hooks]
precommit.branch_check = python:next_hooks.precommit_bad_branch
而且你也可以在任何 Python 文件里使用,包括 next_hooks.py
这个文件。
另外,你也可以在 next_hooks.py
文件里修改 sys.path
,可以用类似下面的代码:
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
import hook_utils