nginx trac mysql svn,使用Trac和SVN进行提交后挂接

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

trac-post-commit-hook.cmd

trac-post-commit-hook

I have setup the post-commit.bat file in d:\svn\hooks file with the following

%~dp0\trac-post-commit-hook.cmd %1 %2

In my trac-post-commit-hook.cmd - I have

@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%"

== 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

File "trac-post-commit-hook.py", line 104, in

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()

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:

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

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 options.project and it might be set to None when it should be set from TRAC_ENV from the -p option.

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 options.project after the arguments have been parsed. Try to track down why it's not being set.

EDIT: By the way, the error line:

File "trac-post-commit-hook.py", line 104, in

os.environ{'PYTHON_EGG_CACHE'] = os.path.join(options.project, '.egg-cache')

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:

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

and see what the output is.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值