SVN Windows üzerinde PHP için exec () metin yönlendirme kanca post-commit

2 Cevap php

Ben Mantis hata izci benim SubVersion kurulum kanca çalışırken aşağıdaki yazıyı takip edilmiştir.

How To Integrate Subversion and Mantis

Her şey Mantis checkin.php komut dosyası çağırır ve ona komut oluşturuldu ileti dize besleyen son satıra kadar çalışıyor.

exec(CHECKIN . " <<< \"$message\"");

Ben hattın amacı checkin.php uygun bir eşleştirme dizesi kontrol ve Mantis izleme veritabanını güncellemek için okur STDIN hangi Mantis 'için mesaj dize göndermek olduğunu anlıyorum.

Her neyse, ben yukarıda kongre bir Linux kurulumu için olduğunu biliyorum. Benim soru PHP script (checkin.php) arayın ve STDIN için bu programa inşa dize geçmek için PHP, Windows ortamında exec() function kullanmak nasıl olduğunu.

NOTE: Ben STDIN'den okumak için checkin.php mantığı değiştirmek için değil tercih ederim.

Teşekkürler!

2 Cevap

Ben herhangi bir daha fazla mesaj kazanılmış değil, ama sistemin () fonksiyonu ile oynuyor sonra, ben STDIN'den giriş olarak bir dosya yönlendirmek mümkün oldu ama bir veri dizisi geçemedi. Ben geçici bir dosya yazmak ve STDIN'den için giriş olarak kullanmak benim PHP bir toplu iş benzer bir şey yapıyor seçeneği vardı, ama ben zaten aramak için SVN post-commit kanca için bir toplu iş dosyası kullanarak beri PHP komut dosyası ben önde gitmek ve sadece toplu iş dosyasında orada bütün senaryoyu yazmak düşündüm.

İşte SVN post-commit kanca için benim son çözüm:

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%

Bu komut aşağıdaki biçimde bir açıklama ile eşleşen mantis bilet güncellemeleri:

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

kabuk-windows cmd.exe tarafından işlenir. Bunu kullanmak için, exec çağırmadan önce yönlendirmeyi orkestra olurdu: bu işlevselliği elde etmek için kolay yolu system() . exec() bir kabuk kullanmak değildir ile.