¿Cómo puedo saber de qué twig proviene el empuje?

Estoy intentando limitar los envíos a la twig master solo permitiendo commands de push que provienen de la twig de test .

¿Cómo puedo saber de qué twig proviene el push ?

No se puede, al less no con methods convencionales en ganchos de recepción y actualización. Los empujes no "provienen" de ninguna parte en particular: los ganchos simplemente obtienen una list de nombres de reference y valores de SHA-1.

Los ganchos de pre-receive y update tienen la oportunidad de aprobar o desaprobar cada request para cambiar los refs/ whatever label refs/ whatever que refs/ whatever a algún SHA-1 nuevo (en su caso, querría ver si la label es específicamente refs/heads/master ) . (La diferencia entre pre-receive y update es que el primero obtiene la list completa en stdin, con valores SHA-1 antiguos y nuevos, mientras que el último obtiene las actualizaciones una a la vez como arguments, es decir, se llama una vez para cada uno -be-updated ref. Un solo push puede impulsar muchas actualizaciones de ref. El gancho de pre-receive puede verificar el set como un todo, pero solo puede decir "sí" o "no" a la actualización como un todo; , el gancho de update puede verificar cada actualización individualmente y decir Sí o No a cada una individualmente).

El gancho post-receive se llama después de que se hayan realizado todas las actualizaciones, con una list de los cambios "ref X utilizados para apuntar a oldsha y ahora apunta a newsha ".

En todos los casos, no hay información de origen, solo SHA-1 sin formatting, lo que tiene sentido ya que quien ejecuta el command push puede hacer:

 git push remote 1234567:refs/tags/foo 

por ejemplo, para crear una nueva label apuntando al object 1234567 sin tener realmente ninguna label correspondiente en su propio repository.

Para hacer que este tipo de cosas funcionen, puedes rechazar bashs de master completo y modificar el process: los usuarios ingresan a otra twig (o incluso a un repository diferente) y, una vez que se ve el resultado, se ingresa la confirmación ahora revisada. master por otros medios (fusión manual o automática desde el éxito).

La forma más rápida es usar gitk: http://git-scm.com/docs/gitk