邮政commit钩子与Trac系统和SVN(Post Commit Hook with Trac a

2019-09-18 08:00发布

所以我有这个了一些问题的设置。 让我解释。

我在我的d三个文件:\ SVN \钩文件(d:\是不是Windows驱动器)

后commit.bat
TRAC - 后提交,hook.cmd
TRAC - 后提交钩

我已经安装在d的commit.bat后的文件:\ 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 -后提交钩文件http://trac.edgewall.org/browser/trunk/contrib/trac-post-commit-hook?rev=920

== ==问题

当我运行在命令提示符,commit.bat后 - 它工作得很好 - 也不会产生错误。

然而,当我犯的SVN东西测试票我在Trac的创建 - #1固定。 - 关于Trac系统未发生任何变化。 没有更新的。

当我改变“的trac - 后提交钩”到“trac-post-commit-hook.py”和d运行:\ SVN \吊钩\ python的trac-post-commit-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()

我很茫然,什么是真正的问题呢? 任何人都可以提供任何帮助?

Answer 1:

你可能要检查这个答案,看它是否可以帮助您解决问题:

  • 如何实现在Windows环境中使用的Trac和SVN邮政commit钩子?

如果没有帮助,你应该尝试记录到文件中。 既然当您使用SVN工作正常,但失败了Trac的,它可能是一些配置错误。 一旦你其实可以查看错误信息,它会更容易解决。 对于初学者尝试更改为:

Python "%~dp0\trac-post-commit-hook" -p "%TRAC_ENV%" -r "%REV%" 2>&1 1>>c:\temp\trachook.log

在您的CMD文件。 这应该同时发送输出和错误消息在\ Temp \ trachook.log文件。

编辑:对不起,你错过了已经发布的错误信息。 看起来像它没有得到正确的options.project ,它可能会被设置为无时,它应该被设置TRAC_ENV-p选项。

你确定你与你重新命名它的.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是无)。 尝试把一条线,一个前:

print 'options.project is set to: ', options.project

看看输出是什么。



Answer 2:

钩脚本需要传递的参数。 用手测试,你可以运行:

TRAC-提交后钩-p /路径/到/环境-r 1001

与包含的命令的修改,并与你的trac环境的路径替换1001。 运行它,而你在钩子目录。

祝好运!



文章来源: Post Commit Hook with Trac and SVN