在Windows上使用Python脚本作为Subversion钩子

2 投票
1 回答
3681 浏览
提问于 2025-04-15 12:56

我的主要目标是让这个能够正常运行。

当我用Tortoise SVN进行提交时,我的钩子会被调用,但总是在这一行退出:Python "%~dp0trac-post-commit-hook.py" -p "%TRAC_ENV%" -r "%REV%" || EXIT 5

如果我尝试用任何简单的Python脚本替换对这个Python脚本的调用,它仍然不工作,所以我猜问题出在调用Python的部分,而不是脚本本身。

我尝试过设置PYTHON_PATH变量,也把%PATH%设置为包含Python。

我已经让trac正常运行,所以Python在服务器上是可以工作的。

这里有一些背景信息:

  • Python安装在Windows服务器上,而脚本是从本地机器调用的,所以

    IF NOT EXIST %TRAC_ENV% EXIT 3

    还有

    SET PYTHON_PATH=X:\Python26

    IF NOT EXIST %PYTHON_PATH% EXIT 4

除非我把它们指向映射的网络驱动器(也就是说指向X和Y驱动器,而不是C和E驱动器),否则这些都会失败。

  • Python脚本可以从服务器的命令行在任何地方调用,无论驱动器是什么,所以PATH变量应该设置正确。

看起来是调用外部Python脚本时出现了问题,但我不确定该如何更改权限来解决这个问题。

提前谢谢你。

1 个回答

3

请注意以下几点:

  • 网络驱动器的映射和 subst 映射是针对每个用户的。确保在运行svn服务器的用户账户下,这些驱动器是存在的。
  • Subversion的钩子脚本出于安全原因,运行时不会设置任何环境变量,连 %path% 也不会。因此,调用Python可执行文件时要使用绝对路径,比如 c:\python25\python.exe

撰写回答