tutorial receive oneline ocean log hooks example enable deploy control automate git githooks

receive - ¿Se pueden administrar los scripts de Git Hook junto con el repositorio?



git log oneline graph (8)

Nos gustaría crear algunos scripts de enganche básicos que todos podamos compartir, para cosas como los mensajes de confirmación de formato previo. Git tiene scripts de enganche para los que normalmente se almacenan en <project>/.git/hooks/ . Sin embargo, esos scripts no se propagan cuando las personas hacen un clon y no tienen control de versión.

¿Hay una buena manera de ayudar a todos a obtener los scripts de gancho correctos? ¿Puedo simplemente hacer que los scripts de enlace apunten a los scripts de versión controlada en mi repositorio?


Con respecto a los git-hooks , .git/hooks githooks en el script en el directorio de proyectos githooks .

También hay muchas características que le permiten minimizar la copia y el enlace de enlaces simbólicos en todo el lugar.


En Git 2.9 , la opción de configuración core.hooksPath especifica un directorio de core.hooksPath personalizados.

Mueva sus ganchos a un directorio rastreado de hooks en su repositorio. Luego, configure cada instancia del repositorio para usar los hooks rastreados 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 enganches (generalmente la raíz del árbol de trabajo; consulte la sección DESCRIPCIÓN de man githooks ).


Estamos utilizando soluciones de Visual Studio (y, por lo tanto, proyectos) que tienen eventos previos y posteriores a la construcción. Estoy agregando un proyecto adicional llamado ''GitHookDeployer''. El proyecto auto modifica un archivo en el evento posterior a la compilación. Ese archivo está configurado para copiar en el directorio de compilación. Así, el proyecto se construye cada vez y nunca se salta. En el evento de compilación, también se asegura de que todos los ganchos de git estén en su lugar.

Tenga en cuenta que esta no es una solución general, ya que algunos proyectos, por supuesto, no tienen nada que construir.


La mayoría de los lenguajes de programación modernos, o más bien sus herramientas de compilación, admiten complementos para administrar los ganchos de git. Eso significa que todo lo que necesita hacer es configurar su package.json, pom.xml, etc., y cualquiera en su equipo no tendrá más opción que cumplir a menos que cambien el archivo de compilación. El complemento agregará contenido al directorio .git por ti.

Ejemplos:

https://github.com/olukyrich/githook-maven-plugin

https://www.npmjs.com/package/git-hooks


Puede hacer que su carpeta de ganchos sea otro repositorio de git y vincularlo como un submódulo ... Supongo que vale la pena solo si tiene muchos miembros y se cambian los ganchos regularmente.


Si su proyecto es un proyecto de JavaScript y utiliza npm como gestor de paquetes, puede usar hook shared-git-hooks para imponer githooks en la npm install .


Teóricamente, podría crear un directorio de hooks (o el nombre que prefiera) en el directorio de su proyecto con todos los scripts, y luego vincularlos en .git/hooks . Por supuesto, cada persona que clonó el repositorio tendría que configurar estos enlaces simbólicos (aunque podría ser realmente sofisticado y tener un script de implementación que el clonador podría ejecutar para configurarlos de forma semiautomática).


pre-commit hace esto fácil para los ganchos de pre-commit. No responde a la pregunta del OP sobre la gestión de cualquier gancho de git arbitrario, pero los ganchos de confirmación previa son probablemente los más utilizados con fines de calidad de código.