Idealmente, los ganchos se escriben en bash, si sigue los archivos de muestra. Pero puede escribirlo en cualquier idioma disponible, y solo asegúrese de que tenga la bandera ejecutable.
Por lo tanto, puede escribir un código Python o Go para lograr sus objetivos y colocarlo debajo de la carpeta de ganchos. Funcionará, pero no se administrará junto con el repositorio.
Dos opciones
a) Scripts múltiples
Puede codificar sus ganchos dentro de su ayuda y agregar un pequeño fragmento de código a los ganchos, para llamar a su script perfecto, así:
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/myprecommit.js
b) Script único
Una opción más genial es agregar solo un script para gobernarlos a todos, en lugar de varios. Entonces, creas un gancho / mysuperhook.go y apuntas cada gancho que quieras tener.
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/mysuperhook.go $(basename $0)
El parámetro proporcionará a su script qué gancho se activó, y puede diferenciarlo dentro de su código. ¿Por qué? A veces es posible que desee ejecutar la misma verificación para confirmar y empujar, por ejemplo.
¿Y entonces?
Entonces, es posible que desee tener más funcionalidades, como:
- Active el gancho manualmente para verificar si todo está bien, incluso antes de una confirmación o inserción. Si solo llama a su secuencia de comandos (opción aob) haría el truco.
- Active los ganchos en CI, por lo que no necesita volver a escribir las mismas comprobaciones para CI, sería solo llamar a los activadores de confirmación y envío, por ejemplo. Lo mismo que lo anterior debería resolverlo.
- Llame a herramientas externas, como un validador de rebajas o un validador YAML. Puede hacer syscalls y necesita manejar STDOUT y STDERR.
- Asegúrese de que todos los desarrolladores tengan una forma sencilla de instalar los ganchos, por lo que se debe agregar un buen script al repositorio para reemplazar los ganchos predeterminados por los correctos.
- Tenga algunos ayudantes globales, como un cheque para bloquear confirmaciones para desarrollar y dominar ramas, sin tener que agregarlo a cada repositorio. Puede resolverlo teniendo otro repositorio con scripts globales.
¿Puede ser esto más simple?
Sí, hay varias herramientas para ayudarlo a administrar git-hooks. Cada uno de ellos está diseñado para abordar el problema desde una perspectiva diferente, y es posible que deba comprenderlos todos para obtener el que sea mejor para usted o su equipo. GitHooks.com ofrece muchas lecturas sobre el enganche y varias herramientas disponibles en la actualidad.
A partir de hoy, hay 21 proyectos enumerados allí con diferentes estrategias para administrar git hooks. Algunos solo lo hacen para un solo gancho, algunos para un idioma específico, etc.
Una de esas herramientas, escrita por mí y ofrecida de forma gratuita como un proyecto de código abierto, se llama hooks4git . Está escrito en Python (porque me gusta), pero la idea es manejar todos los elementos enumerados anteriormente en un solo archivo de configuración llamado .hooks4git.ini, que se encuentra dentro de su repositorio y puede llamar a cualquier script que desee llamar, en cualquier idioma .
Usar git hooks es absolutamente fantástico, pero la forma en que se ofrecen generalmente solo aleja a las personas de él.