¿Se pueden administrar los scripts de Git Hook junto con el repositorio?
Nos gustaría crear algunos scripts de enlace básicos que todos podamos compartir, para cosas como el formato previo de los mensajes de confirmación. Git tiene scripts de enlace para eso que normalmente se almacenan en <project>/.git/hooks/
. Sin embargo, esos scripts no se propagan cuando las personas realizan una clonación y no están controlados por su versión.
¿Existe una buena manera de ayudar a todos a obtener los scripts de enlace correctos? ¿Puedo hacer que esos scripts de enlace apunten a scripts de versión controlada en mi repositorio?
En Git 2.9 , la opción de configuración core.hooksPath
especifica un directorio de enlaces personalizado.
Mueva sus enlaces a un hooks
directorio rastreado en su repositorio. Luego, configure cada instancia del repositorio para usar el seguimiento hooks
en lugar de $GIT_DIR/hooks
:
git config core.hooksPath hooks
En general, la ruta puede ser absoluta o relativa al directorio donde se ejecutan los enlaces (generalmente la raíz del árbol de trabajo; consulte la sección DESCRIPCIÓN de man githooks
).
Teóricamente, podrías crear un hooks
directorio (o el nombre que prefieras) en el directorio de tu proyecto con todos los scripts y luego vincularlos simbólicamente en formato .git/hooks
. Por supuesto, cada persona que clonara el repositorio tendría que configurar estos enlaces simbólicos (aunque podría ser muy sofisticado y tener un script de implementación que el clonador podría ejecutar para configurarlos de forma semiautomática).
Para hacer el enlace simbólico en *nix, todo lo que necesitas hacer es:
root="$(pwd)"
ln -s "$root/hooks" "$root/.git/hooks"
Úselo ln -sf
si está listo para sobrescribir lo que hay en.git/hooks