Lea de STDIN en un gancho de precomisión de Git (con PHP)

Estoy buscando una forma de hacer que git-commit espere la input estándar. Estoy codificando esto en PHP , ya que mis habilidades bash son inexistentes, así que creo que hacer una regular

 <?php $input = trim(fgets(STDIN)); fscanf(STDIN, "%d\n", $line); ?> 

haría el truco, y esperaría hasta que escriba cosas para continuar, pero sigue adelante y continúa ejecutando mi script PHP de todos modos.

La idea detrás de esto es que después de labelr un lanzamiento, git empujará HEAD al server web de testing, enviará un par de tweets y me dejará escribir algunos detalles sobre el lanzamiento en CHANGELOG.

Si bien puedo lograr escribir en un file (usando exec('mate -w') ), me gustaría esperar hasta que haga una testing rápida en el server. Esto me permitiría retroceder si noto algún error (flojo, lo sé).

¡Gracias por cualquier ayuda!

La mayoría de los git hooks tienen algo especial alimentado allí o han sido extraídos de la terminal. Están diseñados para funcionar de forma no interactiva, por lo que no creo que un gancho sea adecuado para lo que quieres hacer. Por supuesto, puede hablar manualmente con /dev/tty pero no creo que sea una muy buena idea.

Tampoco creo que el enlace "precompromiso" sea adecuado para su tarea, seguramente no todos los compromisos que realice serán un lanzamiento de algún tipo. Un gancho 'post-recepción' en la máquina del server web de testing parece más apropiado.

Necesito la input del usuario en mi gancho post-fusión (escrito en PHP).

Lo resolví con este fragment de código: trim(exec('exec < /dev/tty && read input && echo $input'))

No preguntes, funciona;)