これ以上投稿はありませんが、system()関数をいじった後、STDINへの入力としてファイルをリダイレクトできましたが、データの文字列を渡すことができませんでした。PHPでバッチジョブと同様のことを実行して一時ファイルを作成し、それをSTDINへの入力として使用するオプションがありましたが、SVNのコミット後フックにバッチファイルを使用して呼び出していたためです。私が考えたPHPスクリプトは、先に進んで、スクリプト全体をバッチファイルに書き込むだけです。
SVNのコミット後フックの最終的な解決策は次のとおりです。
post-commit.bat
@ECHO off
SETLOCAL
SET REPOS=%1
SET REV=%2
SET PHP="C:\Program Files\PHP\php.exe"
SET CHECKIN="D:\mantisbt-1.1.8\core\checkin.php"
SET SVNLOOK="C:\Program Files\CollabNet\Subversion Server\svnlook.exe"
SET LOGFILE=log%REV%.txt
SET AUTHORFILE=author%REV%.txt
SET OUTPUTFILE=output%REV%.txt
SET CHANGEFILE=change%REV%.txt
ECHO Author: > %AUTHORFILE%
%SVNLOOK% author -r %REV% %REPOS% >> %AUTHORFILE%
ECHO Log: > %LOGFILE%
%SVNLOOK% log -r %REV% %REPOS% >> %LOGFILE%
ECHO Files: > %CHANGEFILE%
%SVNLOOK% changed %REPOS% %REV% >> %CHANGEFILE%
ECHO Revision: %REV% > %OUTPUTFILE%
%SVNLOOK% date %REPOS% -r %REV% >> %OUTPUTFILE%
TYPE %AUTHORFILE% >> %OUTPUTFILE%
TYPE %LOGFILE% >> %OUTPUTFILE%
TYPE %CHANGEFILE% >> %OUTPUTFILE%
TYPE %OUTPUTFILE% | %PHP% %CHECKIN%
CALL DEL %LOGFILE%
CALL DEL %AUTHORFILE%
CALL DEL %CHANGEFILE%
CALL DEL %OUTPUTFILE%
このスクリプトは、一致するmantisチケットを次の形式のコメントで更新します。
Revision: 41
2009-11-25 11:47:18 -1000 (Wed, 25 Nov 2009)
Author:
jason
Log:
Testing for checkin for TER #12345 which fixes Mantis issue 0000001.
Files:
U TANDEM/CAB/CABLONGD