Estoy usando git con trac. Después de empuje Quiero dos que hay que hacer:múltiples comandos no funcionan en git post-receive
- el envío de correo electrónico a equipo de desarrollo con Diff
- Si hay alguna frase especial en cometer mensaje (como "ver # 1"), entonces yo quiero que el mensaje de entrega para ser colocado en el boleto de trac.
Lo primero es resuelto por git-commit-notifier. Funciona perfectamente después de haber creado después de la recepción de gancho:
#!/bin/sh /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
Mi segundo requisito puede ser resuelto según lo descrito en http://trac-hacks.org/wiki/GitPlugin#post-receivehookscripts. También funciona perfectamente con dicho gancho post-recepción:
#!/bin/sh /var/trac/testgit/commit-updater
Ambas cosas funcionan cuando están separadas. Pero necesito combinarlos. Así que he creado gancho post-recepción:
#!/bin/sh /var/trac/testgit/commit-updater /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
Es muy divertido, pero esto no está funcionando. Los comandos se ejecutan perfectamente bien cuando se ejecutan por separado, pero solo el primero funciona cuando se colocan en el gancho posterior a la recepción.
Si tengo tales gancho:
#!/bin/sh /var/trac/testgit/commit-updater /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
hago recibir el siguiente error
/var/lib/gems/1.8/gems/git-commit-notifier-0.8.0/bin/git-commit-notifier:12: undefined method `strip' for nil:NilClass (NoMethodError) from /var/lib/gems/1.8/bin/git-commit-notifier:19:in `load' from /var/lib/gems/1.8/bin/git-commit-notifier:19
Pero si cambio de orden de este 2 comandos no recibo ningún error, pero sólo el primer comando funciona.
Agradeceré cualquier ayuda. Intento resolver este problema por mucho tiempo y no tengo ideas.
@bessarabov: Parece que intenta leer de STDIN, pero no puede, presumiblemente porque la primera línea lo está leyendo todo. – ngoozeff
Si ngoozeff es correcto, haga que su gancho copie su stdout en un archivo temporal, y luego redirija ese archivo temporal a cada uno de los dos comandos. – bstpierre
@ngoozeff ¡gracias! tu sugerencia es 100% correcta =) ¡Con la ayuda de @bstpierre todo está funcionando ahora! – bessarabov