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

È stato utile?

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 vengono elaborati dal shell su Windows cmd.exe. Il modo più semplice per ottenere che la funzionalità è con system() . exec() non utilizzare una shell:. usarla, avresti per orchestrare il reindirizzamento prima di chiamare exec

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top