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!

È stato utile?

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;)

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