exec () reindirizzamento di testo per PHP su Windows su SVN post-commit hook
-
21-09-2019 - |
Domanda
Ho seguito il post qui sotto cercando di agganciare la mia installazione SubVersion alla mia Mantis bug tracker.
Come integrare Subversion e Mantis
Tutto funziona bene fino a quando l'ultima riga in cui si chiede lo script checkin.php Mantis e la immette la stringa del messaggio che è stato creato nello script.
exec(CHECKIN . " <<< \"$message\"");
ho capito lo scopo della linea è quello di inviare la stringa di messaggio al STDIN che Mantis' checkin.php si legge al fine di verificare la presenza di una stringa di corrispondenza adeguata e aggiornamento il database di monitoraggio Mantis.
In ogni modo, so che quanto sopra convenzione è per un'installazione di Linux. La mia domanda è come vorrei utilizzare il PHP exec () funzione in un ambiente Windows per chiamare lo script PHP (checkin.php) e passare la stringa costruita in questo programma per STDIN .
Nota. preferirei non cambiare la logica in checkin.php di leggere da STDIN
Grazie !!
Soluzione 2
Non ho ottenuto alcun gli altri messaggi, ma dopo giocando con la funzione di sistema (), sono stato in grado di reindirizzare un file come input per STDIN ma non è riuscito a passare una stringa di dati. Ho avuto la possibilità di fare qualcosa di simile a un processo batch nel mio PHP dove vorrei scrivere un file temporaneo, e l'uso che come input per STDIN, ma dato che ero già utilizzando un file batch per il gancio post-commit in SVN per chiamare lo script PHP ho pensato vorrei andare avanti e basta scrivere l'intero script lì nel file batch.
Ecco la mia soluzione finale per il gancio SVN post-commit:
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%
Questo script aggiorna un biglietto corrispondente mantide con un commento nel seguente formato:
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
Altri suggerimenti
reindirizzamenti utilizzando system()
. exec()
non utilizzare una shell:. usarla, avresti per orchestrare il reindirizzamento prima di chiamare exec