Mi configuración es un servidor XAMPP de Windows, con cURL habilitado, y Git y Hudson instalados. Hudson encuesta a Git cada minuto para buscar cambios, y si los encuentra, crea una construcción. Yo uso esta compilación como mi servidor de prueba. Esto funciona bienEl gancho post-recepción Git no funciona
me gustaría preparar un gancho posterior a recibir en mi repositorio remoto central que ejecuta la función de la fuerza de construcción de Hudson.
He creado un archivo post-recepción llamado "post-recepción" en el directorio de ganchos en mi repositorio central de Git, el que se envía desde las sucursales locales de los desarrolladores. Cada uno empuja a su propia sucursal en el repositorio central. Quiero ejecutar la creación posterior a la recepción inmediatamente después de cada inserción, en lugar de hacer que Hudson sondee cada minuto.
Al abrir un shell al servidor remoto y ejecutar "post-recepción" en la carpeta de ganchos, que se ejecuta. Simplemente no se llama cuando las personas presionan desde sus copias de repositorio locales hasta la central.
Tal vez no estoy explicando esto bien, pero es como yo entiendo Git.
La posterior a recibir el código es de dos líneas:
#!/bin/sh
curl http://myserver.com:8080/hudson/job/myjobname/build?token=mytoken
Una vez más, al abrir un shell y ejecutar este, funciona, pero cuando alguien empuja a él, no pasa nada, hasta que un minuto o menos va por, Hudson se da cuenta de que Git fue cambiado, y luego se construye.
Me complace aclarar si es necesario. Cualquier ayuda es muy apreciada.
EDIT: Después de jugar un rato con él, siento que tal vez después de la recepción no se árbitros de ejecución, porque no se actualizan de algo? La documentación de git dice
Se ejecuta en el repositorio remoto una vez que se han actualizado todas las referencias.
¿Esto significa que si nada se actualiza, no se ejecutará? Y si es así, estoy bastante seguro de que las cosas se están actualizando de todos modos, así que no deberían aplicarse.
Aquí está mi proceso: edic localmente. Confirmar ediciones. Empuje desde mi HEAD a la rama remota llamada 'mybranch' (no la rama principal, que está desprotegida) Este es el punto en el que quiero que se ejecute mi gancho.
El usuario su demonio Git se está ejecutando tiene permiso para ejecutar ese guión? – jweyrich
No estoy seguro. Lo ejecuta cuando lo ejecuto a través de Git Bash, pero no cuando lo presiono. ¿Cómo verificaría esos permisos? – spanky
el permiso correcto depende de la forma en que esté compartiendo su repositorio y las configuraciones reales. Sin embargo, msquared te dice la forma de otorgar permisos ejecutables a todos los usuarios/grupos, por lo que debería funcionar si el problema es ese. – jweyrich