使用Trac和SVN进行提交后挂接 [英] Post Commit Hook with Trac and SVN
问题描述
因此我在设置此设置时遇到了一些问题.让我解释一下.
我的d:\ svn \ hooks文件中有三个文件(D:\不是Windows驱动器)
post-commit.bat
trac-post-commit-hook.cmd
trac-post-commit-hook
我已使用以下命令在d:\ svn \ hooks文件中设置了post-commit.bat文件
%~dp0\trac-post-commit-hook.cmd %1 %2
在我的trac-post-commit-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-post-commit-hook文件中-它只是 我对真正出了什么问题不知所措?任何人都可以提供帮助吗? 您可能需要检查此答案,以查看它是否可以帮助您解决问题: 在您的cmd文件中.这应该将stdout和stderr消息都发送到\ temp \ trachook.log文件. 对不起,错过了您已经发布的错误消息.看起来它没有获得正确的 在将其重命名为.py并运行它之后,确定要使用该选项运行它吗?如果是这样,请尝试解析该文件并在解析完参数后记录 顺便说一句,错误行: 在提交后挂钩的链接中没有看到对此的引用.您添加了吗?还是链接错误?另外,该行中存在语法错误:大括号"{"应为方括号"[".但是我认为错误实际上是在此之前发生的,在os.path.join中(options.project为None).尝试在该行之前放置一行: ,看看输出是什么. So I am having a few problems with settings this up. Let me explain. I have three files in my d:\svn\hooks file (D:\ is not windows drive) post-commit.bat I have setup the post-commit.bat file in d:\svn\hooks file with the following In my trac-post-commit-hook.cmd - I have In my trac-post-commit-hook file - its just the standard script from http://trac.edgewall.org/browser/trunk/contrib/trac-post-commit-hook?rev=920 == Problems == When I run post-commit.bat in cmd prompt - it works fine - no errors are generated. However, when I commit something in the SVN for a test ticket I created in Trac - #1 fixed. - nothing changes on Trac. Nothing updates at all. When I change the 'trac-post-commit-hook' to 'trac-post-commit-hook.py' and run from d:\svn\hooks\python trac-post-commit-hook.py I get I am at a loss as to what is actually going wrong ? Can anyone provide any assistance ? You might want to check this answer to see if it helps you solve your problem: If that doesn't help, you should try logging to a file. Since it works fine when you use SVN, but fails for Trac, it's probably some config error. Once you can actually view the error message, it will be easier to fix. For starters try changing to: in your cmd file. This should send both stdout and stderr messages to the \temp\trachook.log file. EDIT: Sorry, missed the error message you posted already. Looks like it's not getting the right Are you sure you're running it with that option after you rename it to .py and run it? If so, try changing that file and logging the value of EDIT: By the way, the error line: I don't see a reference to this in the link to the post-commit-hook. Did you add this? Or is the link wrong? Also, there's a syntax error in that line: the curly brace '{' should be a square brace '['. But I think the error actually happens before that, in the os.path.join (options.project is None). Try putting a line before that one: and see what the output is. 这篇关于使用Trac和SVN进行提交后挂接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
options.project
,并且应该从-p
选项的TRAC_ENV
设置时将其设置为None. options.project
的值.尝试找出未设置它的原因.File "trac-post-commit-hook.py", line 104, in <module>
os.environ{'PYTHON_EGG_CACHE'] = os.path.join(options.project, '.egg-cache')
print 'options.project is set to: ', options.project
trac-post-commit-hook.cmd
trac-post-commit-hook%~dp0\trac-post-commit-hook.cmd %1 %2
@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%"
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()
Python "%~dp0\trac-post-commit-hook" -p "%TRAC_ENV%" -r "%REV%" 2>&1 1>>c:\temp\trachook.log
options.project
and it might be set to None when it should be set from TRAC_ENV
from the -p
option. options.project
after the arguments have been parsed. Try to track down why it's not being set.File "trac-post-commit-hook.py", line 104, in <module>
os.environ{'PYTHON_EGG_CACHE'] = os.path.join(options.project, '.egg-cache')
print 'options.project is set to: ', options.project