Leggere da STDIN su un Git pre-commit hook (con PHP)
Domanda
Sto cercando un modo per avere git-commit
attendere per l'input standard. Sto Coding questo PHP
, come le mie competenze sono bash
inesistente, così ho thougth facendo un normale
<?php
$input = trim(fgets(STDIN));
fscanf(STDIN, "%d\n", $line);
?>
farebbe il trucco, e attendere che scrivo roba per continuare, ma si va solo avanti e continua ad eseguire il mio script PHP in ogni modo.
L'idea alla base di questo è che, dopo i codici di sblocco, git spingerà HEAD
al server web di test, inviare un paio di tweet, e farmi scrivere in alcuni dettagli circa il rilascio nel changelog.
Mentre posso raggiungere la scrittura su un file (utilizzando exec('mate -w')
), mi piacerebbe che da appendere fino a quando faccio un test rapido sul server. Questo mi permetterebbe di far ritirare se mi accorgo eventuali errori (pigro, lo so).
Grazie per qualsiasi aiuto!
Soluzione
Le più ganci git o hanno qualcosa alimentato speciale lì stdin, o hanno stdin staccato dal terminale. Essi sono tutti progettati per essere eseguiti in modo non interattivo, quindi non credo che un gancio è adatto a ciò che si vuole fare. È possibile, naturalmente, parlare manualmente per /dev/tty
, ma non credo che sia una buona idea.
Anche io non credo che il gancio 'pre-commit' è adatto per il vostro compito, sicuramente non tutti i commit che fate sarà un rilascio di qualche tipo? Un gancio 'post-ricezione' sulla macchina di prova webserver suona più appropriata.
Altri suggerimenti
ho bisogno di input da parte dell'utente nel mio gancio post-merge (scritto in PHP).
ho risolto con questo pezzo di codice: trim(exec('exec < /dev/tty && read input && echo $input'))
Non chiedere, funziona;)