Pergunta

Eu estou procurando uma maneira de ter espera git-commit para a entrada padrão. Eu estou codificação isso em PHP, como minhas habilidades bash são inexistente, então eu thougth fazendo um regular

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

faria o truque, e esperar até que eu escrever coisas para continuar, mas ele só vai em frente e continua a executar o meu script PHP de qualquer maneira.

A idéia por trás disso é que depois que eu marcar um lançamento, git vai empurrar HEAD para o servidor de teste, envie um par de tweets, e deixe-me escrever em alguns detalhes sobre o lançamento no changelog.

Embora eu possa alcançar a escrita para um arquivo (usando exec('mate -w')), eu gostaria que ele pendurar até que eu faça um teste rápido no servidor. Isso me permitiria reverter se eu perceber quaisquer erros (preguiçoso, eu sei).

Obrigado por qualquer ajuda!

Foi útil?

Solução

A maioria dos ganchos git quer ter algo especial alimentado para lá stdin, ou ter stdin separado do terminal. Eles são todos concebidos para ser executado de forma não interativa, então eu não acredito que um gancho é adequado para o que você quer fazer. Você pode, é claro, falar manualmente para /dev/tty mas eu não acho que é uma idéia muito boa.

Eu também não acredito que o gancho 'pré-compromisso' é adequado para a sua tarefa, certamente não cada submissão que você fizer vai ser uma liberação de algum tipo? A 'pós-receber' gancho nos sons máquina de teste do servidor web mais apropriados.

Outras dicas

Eu preciso de entrada do usuário no meu gancho post-merge (escrito em PHP).

Eu resolvi-lo com este pedaço de código: trim(exec('exec < /dev/tty && read input && echo $input'))

Não pergunte, ele funciona;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top