【发布时间】:2011-10-13 08:01:19
【问题描述】:
我正在尝试创建一个在提交被推送到主存储库时运行的 Mercurial 挂钩。我创建了一个 python 脚本,如下所示:
# 提交.py 从 mercurial 进口 ui, hg 从 mercurial.i18n 导入 gettext 作为 _ def getV1ID(ui, repo, **kwargs): ui.write("钩子有效!!!") v1id = ui.prompt('输入 VersionOne ID') ui.write('版本号:'+v1id)对于每个分支,这个commit.py 是重复的,因为它包含在代码被推送到主存储库之前需要运行的机制。只有当这些预推送机制通过时,推送才会成功。用户可以修改他们的本地 commit.py,以便他们只运行这些预推送操作的子集,具体取决于他们所从事的项目,并且每个人一次可以从事多个项目。因此,commit.py 不能是可以驻留在.hg 文件夹中的全局 Python 脚本。
为了让 mercurial 运行本地 commit.py,在我的 mercurial.ini 文件中(在 C:\Users\UserName\mercurial.ini 中),我添加了以下语句:
如果我将 python 脚本放在.hg 文件夹中,它就会运行,但当我这样做时不会运行。谁能帮我阐明这个问题?非常感谢。
【问题讨论】:
-
使用绝对路径是否有效?
-
提供绝对路径会破坏整个目的。开发人员将项目克隆到不同的目录,他们一次将处理多个项目。不得不不断修改
mercurial.ini似乎不是最好的解决方案。我确实找到了解决方案,我很快就会发布。 -
我试图确定问题是您使用的特定相对路径还是其他原因。
-
是的。相对路径不起作用,因为在调用钩子脚本时,工作目录应该是绝对路径,或者应该是 PYTHONPATH 中的 python 模块。
标签: python windows mercurial pre-commit-hook