¿Se empujan los ganchos de git hacia el control remoto cuando 'git push'?

94

Si creo un nuevo script de gancho en mi repositorio local en repo / .git / hooks / post-commit y luego ejecuto "git push", ¿los hooks se envían al control remoto? Entonces, cuando los otros desarrolladores ejecuten "git pull" desde el mismo origen, ¿obtendrán mis nuevos ganchos?

Slacy
fuente
3
Quizás esta ayuda stackoverflow.com/questions/3462955/…
René Höhle
Relacionado (con respuestas muy útiles): ¿Se pueden administrar los scripts de Git hook junto con el repositorio?
Marc.2377

Respuestas:

80

No. Los hooks son por repositorio y nunca se insertan. Del mismo modo, la configuración del repositorio tampoco se inserta, ni hay nada dentro .git/info, ni una serie de otras cosas.

Empujar y tirar solo intercambia ramas / etiquetas y objetos de confirmación (y cualquier cosa accesible desde una confirmación, por ejemplo, árboles, blobs).

Lily Ballard
fuente
14
¿Hay alguna manera de tener ganchos en el centro y hacer que se tiren de cada clon y se apliquen?
f1wade
4
@ f1wade Podrías agregar un .githooksdirectorio que estaría controlado por versiones, luego sym-link o crear scripts de enlace de contenedor desde adentro .git. La clonación no se conectaría automáticamente, .githookspero una vez conectada, puede insertar y extraer nuevas versiones de los scripts de enlace.
Philip Couling
47

No, los ganchos de git no se insertan ni se tiran, ya que no forman parte del código del repositorio.

Consulte la documentación para obtener una lista de ganchos sencillos del lado del cliente y del lado del servidor.

Si desea habilitar algunos enlaces para todos los clientes que clonan o extraen de un repositorio determinado, debe agregar los enlaces a su base de código y luego crear su propio script para copiarlos o vincularlos desde repo/.git/hooks/.

Marco Leogrande
fuente
4
pero ¿cómo se llama al script de copia?
Adam Johns
6
@AdamJohns Lo llama el usuario / desarrollador, probablemente en la forma de un setup.shque el desarrollador ejecuta cuando clona el repositorio por primera vez. Después de esto, las actualizaciones de los ganchos pueden ocurrir automáticamente al tener un gancho que vuelva a ejecutar un script actualizándolos después de cada extracción, por ejemplo. Por lo tanto, no tiene que depender del desarrollador para que lo haga por sí mismo.
cm92
4

Lamentablemente, no, pero desde git 2.9 puede colocarlos en la carpeta .githooks (como otros mencionaron) y ejecutar:

git config --local core.hooksPath .githooks/

Por lo tanto, no se necesitan enlaces simbólicos ni archivos de copia.

Marco Medrano
fuente