Mercurial PreCommit Hook:如何钩住当前目录下的python程序?

2024-06-01 01:22:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个Mercurial钩子,当提交被推送到主存储库时运行。我创建了一个python脚本,如下所示:

# commit.py

from mercurial import ui, hg
from mercurial.i18n import gettext as _

def getV1ID(ui, repo, **kwargs):
    ui.write("The hook works!!!")
    v1id = ui.prompt('Enter the VersionOne ID')
    ui.write('VersionOne ID: '+v1id)

对于每个分支,commit.py都是重复的,因为它包含在代码被推送到主存储库之前需要运行的机制。只有当这些预推机制通过时,推送才会成功。用户可以修改其本地提交.py因此,他们只运行这些预推送操作的子集,这取决于他们所从事的项目,而且每个人一次可以处理多个项目。因此,commit.py不能是可以驻留在.hg文件夹中的全局python脚本。在

要使mercurial在我的水星.ini文件(C:\Users\UserName\水星.ini),我添加了以下语句:

^{pr2}$

如果我把python脚本放在.hg文件夹中,它就会运行,但当我这样做时就不会运行了。有谁能帮我解释一下这个问题吗?非常感谢。在


Tags: 项目frompyimport脚本文件夹idui
1条回答
网友
1楼 · 发布于 2024-06-01 01:22:32

我通过IRC为Mercurial得到了这个解决方案。正如我的一条注释中所述,钩子的脚本应该被指定为绝对路径,或者应该是PYTHONPATH中的python模块。因此,IRC上的pmezard建议我应该有一个调用本地{}的固定脚本。具体操作如下:

mercurial.ini中,钩住位于用户主目录.hg目录中的“global”python脚本,如下所示:

[hooks]
preoutgoing = python:%USERPROFILE%\.hg\commit.py:run

“global”python脚本commit.py如下所示:

^{pr2}$

然后,存储库目录中的localcommit.pyglobal提交脚本运行,因此每个存储库都可以维护自己的自定义提交脚本。在

相关问题 更多 >