Obtener la twig entrante de push en un gancho Git

Actualmente somos un equipo de 3 desarrolladores trabajando en un proyecto usando gitlab.com

Tenemos dos serveres, uno para producción y otro para testings, ambos funcionando en diferentes gotas.

Una vez que hemos terminado con nuestros cambios, presionamos al server de testings donde tenemos este gancho post-recepción de Git (es un repository simple):

#!/bin/sh git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f 

Usamos una twig llamada 'testing' (que está desprotegida en el server de testing), así que todo funciona bien. Después de que todo está bien, lo fusionamos en maestro y luego pasamos a la producción. El problema aquí es que a veces es necesario crear una twig para corregir un error en la producción, pero no queremos cargar el trabajo en progreso en nuestra twig de testing, y también queremos probar esta twig de revisión en nuestro server de testing

Es por eso que pensé que podríamos simplemente verificar la twig entrante en el server de testing, para que todos puedan probar su código en un server en vivo sin tener que tener siempre la twig de testing desprotegida. Se puede hacer esto? Intenté search en Google la var de entorno de git para la twig entrante, lo que sería trivial desde allí pero no tuve suerte. Sé que todos podríamos simplemente presionar y verificar manualmente la sucursal en el server de testing, pero esa solución no es atractiva. ¡Sería más eficiente hacer solo con git push y dejar que el server maneje el rest!

Definitivamente esta no es la mejor manera de implementar usando Git, ¡así que soy todo oídos para recibir sugerencias!

Primero, no hay forma de get la twig entrante de una inserción , porque no existe una twig entrante específica asociada con una inserción.

Cualquier push consiste en un número de commits . Los commits pueden estar en una sola twig, pero también pueden estar en varias twigs. Incluso puede enviar confirmaciones que no están en ninguna twig con nombre .

Entonces la pregunta realmente no tiene sentido en este sentido.

En segundo lugar, ¿por qué quiere que su server de producción no vea las twigs no master ? Si el server de producción tiene la twig master desprotegida, la twig de la hotfix no se implementará automáticamente, simplemente porque está registrada en el directory .git/ . Entonces, en realidad, se puede hacer poco daño al empujar una twig no utilizada.

En tercer lugar, si está absolutamente seguro de que no debe enviar las twigs no utilizadas al sistema de implementación (por ejemplo, porque el server de implementación pertenece a un cliente que no debe ver la revisión antes de que lo hayan pagado), puede, por supuesto, twigs con

  git push deployement master 

De alguna manera, puede impulsar automáticamente su twig principal en el server de testing a la producción. Necesita contener estos parameters: <oldrev> <newrev> <refname>

Más detalles, por favor refiérase automáticamente a otro repository .