在Windows上使用Python脚本作为Subversion钩子
我的主要目标是让这个能够正常运行。
当我用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
。