因此,我有一些问题,设置这一点。让我解释一下。
我的d:\svn\hooks文件中有三个文件(D:\不是windows驱动器)
post-commit.bat
trac-post-commit-hook.cmd
后提交钩子
我已经用下面的在d:\svn\hooks文件中设置了后置提交.svn文件
%~dp0\trac-post-commit-hook.cmd %1 %2在我的trac后提交-hook.cmd-我有
@ECHO OFF
::
:: Trac post-commit-hook script for Windows
::
:: Contributed by markus, modified by cboos.
:: Usage:
::
:: 1) Insert the following line in your post-commit.bat script
::
:: call %~dp0\trac-post-commit-hook.cmd %1 %2
::
:: 2) Check the 'Modify paths' section below, be sure to set at least TRAC_ENV
:: ----------------------------------------------------------
:: Modify paths here:
:: -- this one *must* be set
SET TRAC_ENV=D:\trac\project
:: -- set if Python is not in the system path
SET PYTHON_PATH=D:\trac\Python25
:: -- set to the folder containing trac/ if installed in a non-standard location
SET TRAC_PATH=D:\trac\Python25\Lib\site-packages\trac
:: ----------------------------------------------------------
:: Do not execute hook if trac environment does not exist
IF NOT EXIST %TRAC_ENV% GOTO :EOF
set PATH=%PYTHON_PATH%;%PATH%
set PYTHONPATH=%TRAC_PATH%;%PYTHONPATH%
SET REV=%2
Python "%~dp0\trac-post-commit-hook" -p "%TRAC_ENV%" -r "%REV%" 在我的trac后提交钩子文件中它只是来自 的标准脚本。
==问题==
当我在cmd提示符中运行后置提交. are时,它工作得很好,不会生成错误。
但是,当我在SVN中为我在Trac - #1中创建的测试票提交了一些内容时。- Trac没有任何变化。什么都没有更新。
当我将‘trac-post-commit-钩子’更改为‘trac-post-commit-钩子’并从d:\svn\hooks\python trac-post hook.py运行时,我得到
File "trac-post-commit-hook.py", line 104, in <module>
os.environ{'PYTHON_EGG_CACHE'] = os.path.join(options.project, '.egg-cache')
File "D:\trac\Python25\lib\ntpath.py", line 90, in join
assert len(path) > 0
TypeError: object of type 'NoneType' has no len()我不知道到底出了什么问题?有人能提供任何帮助吗?
发布于 2009-07-11 05:47:00
您可能需要检查这个答案,看看它是否帮助您解决问题:
如果这没有帮助,您应该尝试登录到一个文件。由于它在使用SVN时运行良好,但是对于Trac失败,这可能是一些配置错误。一旦您能够实际查看错误消息,它将更容易修复。首先,尝试更改为:
Python "%~dp0\trac-post-commit-hook" -p "%TRAC_ENV%" -r "%REV%" 2>&1 1>>c:\temp\trachook.log在你的cmd文件中。这应该同时向\temp\trachook.log文件发送stdout和stderr消息。
编辑:对不起,错过了您已经发布的错误消息。看起来它没有得到正确的options.project,当应该从TRAC_ENV从-p选项中设置它时,它可能被设置为None。
您确定在将它重命名为.py并运行它之后,使用该选项运行它吗?如果是,请尝试更改该文件,并在解析参数后记录options.project的值。试着找出为什么它没有被设置。
编辑:顺便说一下,错误行:
File "trac-post-commit-hook.py", line 104, in <module>
os.environ{'PYTHON_EGG_CACHE'] = os.path.join(options.project, '.egg-cache')在指向后提交钩子的链接中,我没有看到对此的引用。你加这个了吗?还是联系错了?另外,这一行有一个语法错误:大括号{ '{‘应该是正方形大括号[’‘。但我认为错误实际上发生在os.path.join (options.project为None)之前。试着在那句之前加上一句:
print 'options.project is set to: ', options.project看看输出是什么。
发布于 2009-07-23 14:32:20
钩子脚本要求传递参数。要手动测试,可以运行:
trac后提交钩子-p /path/to/environment -r 1001
用包含命令的修订版替换1001,并使用trac环境替换路径。在钩子目录中运行它。
祝好运!
https://stackoverflow.com/questions/1113010
复制相似问题