【问题标题】:Is it possible for my Mercurial hook to call code from another file?我的 Mercurial 挂钩是否可以从另一个文件调用代码?
【发布时间】:2010-10-27 08:38:07
【问题描述】:

我有一个名为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

【问题讨论】:

    标签: python mercurial python-import mercurial-hook


    【解决方案1】:

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

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

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

    import hook_utils
    

    在任何 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
    

    【讨论】:

    • 谢谢,就像一个魅力。我认为这是代表 Mercurials 的一些安全问题。 :-)
    • 不,这是正常的 Python 导入机制 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多