2

そのため、これを設定する際にいくつか問題があります。説明させてください。

d:\svn\hooks ファイルに 3 つのファイルがあります (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 ファイル - http://trac.edgewall.org/browser/trunk/contrib/trac-post-commit-hook?rev=920の標準スクリプト

== 問題 ==

cmd プロンプトで post-commit.bat を実行すると、問題なく動作します。エラーは生成されません。

ただし、Trac で作成したテスト チケットの SVN で何かをコミットすると、#1 が修正されました。- Trac では何も変わりません。何も更新されません。

「trac-post-commit-hook」を「trac-post-commit-hook.py」に変更し、d:\svn\hooks\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()

実際に何がうまくいかないのか途方に暮れていますか?誰でも支援を提供できますか?

4

2 に答える 2

2

この回答をチェックして、問題の解決に役立つかどうかを確認してください。

それでも問題が解決しない場合は、ファイルにログを記録してみてください。SVN を使用すると問題なく動作しますが、Trac では失敗するため、おそらく何らかの構成エラーです。エラー メッセージを実際に表示できるようになると、修正が容易になります。まず、次のように変更してみてください。

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

あなたのcmdファイルで。これにより、stdout と stderr の両方のメッセージが \temp\trachook.log ファイルに送信されます。

編集: 申し訳ありませんが、既に投稿したエラー メッセージを見逃していました。うまくいかないようで、オプションからoptions.project設定する必要があるときに None に設定されている可能性があります。 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')

post-commit-hook へのリンクにこれへの参照がありません。これを追加しましたか?それともリンクが間違っていますか?また、その行には構文エラーがあります。中かっこ '{' は角かっこ '[' である必要があります。しかし、エラーは実際にはその前に、os.path.join (options.project は None) で発生すると思います。その行の前に行を入れてみてください:

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

出力が何であるかを確認します。

于 2009-07-11T05:47:00.383 に答える
0

フック スクリプトには、パラメーターを渡す必要があります。手でテストするには、次を実行できます。

trac-post-commit-hook -p /path/to/environment -r 1001

1001 をコマンドを含むリビジョンに置き換え、パスを trac 環境に置き換えます。hooks ディレクトリにいる間に実行します。

幸運を!

于 2009-07-23T14:32:20.223 に答える