2009-11-11 23 views
8

Así que estoy tratando de construir hudson con un gancho post-recepción. En mi repositorio git local, me puse post-receive.sample sólo después de la recepción, chmod 755 y se añaden en la línea:git hooks y cómo funcionan

/usr/bin/curl -u user:secret http://localhost:8080/hudson/job/MyJob/build?token=secondsecret 

Si fuerzo una acumulación, Hudson actualiza el código, pero esto es lo que yo no' Entiendo, los ganchos en ese repositorio NO tienen la muestra como ellos hacen localmente, y la post-recepción en el repositorio hudson no tiene esa línea de código arriba. ¿Qué está pasando aquí y cómo se integran los ganchos en todo el proceso de git? ¿Debo cambiar este gancho en el repositorio remoto? Hubiera pensado que era suficiente hacerlo localmente y presionar para que cualquiera que obtuviera de ese repositorio consiguiera los nuevos ganchos. No puedo entender cómo el repositorio de otro usuario tendría ganchos diferentes.

+0

No entiendo la pregunta. Cuando ingresa al repositorio remoto, se invoca el enlace 'post-receive' del repositorio remoto ** en el repositorio remoto **. –

+0

pero mi punto es que no parece estar invocando mi comando curl, si lo ejecuto manualmente, hudson ejecuta una compilación, cuando hago un push, no se ejecuta compilación. – brad

Respuesta

16

Es, básicamente, tiene dos opciones:

  1. Coloque el gancho post-receive en el servidory dejar que el rizo de ejecución del servidor.
  2. Coloque un gancho post-commit en su repositorio local y deje que su caja local se ejecute.

A medida que el trabajo de construcción probablemente buscar el código para construir desde el repositorio en el servidor, única opción 1. Tiene sentido. En el caso 2., el trabajo de compilación probablemente tendría que obtener el código de su casilla local, y probablemente eso no sea lo que desea.

No puede colocar ganchos en el servidor usando git push. Usted (o alguien con los permisos apropiados) necesita hacer esto iniciando sesión manualmente en el servidor y modificando localmente los archivos de script de enlace.

11

Los ganchos no se comparten a través del repositorio. Necesita instalar el gancho en el lado remoto.

+0

pero agregar el enganche a mi local debe invocar el comando en el servidor ¿no? de lo contrario, ¿cuál es el punto del gancho? – brad

+8

+1 Los ganchos no están controlados por la versión y no se comparten entre repositorios. Principalmente esto es por razones de seguridad; una cosa es dejar que alguien inserte código en su repositorio, y otra es permitirles ** ejecutar ** el código en su servidor. Además, a menudo no tiene sentido que todos tengan los mismos enganches, las plataformas pueden ser diferentes, las rutas pueden ser diferentes, los servidores pueden tener diferentes propósitos (etapas, CI, implementación, control de calidad, etc.). –

+1

por lo que escribir ganchos en mi repositorio local ¿no hace nada? – brad

Cuestiones relacionadas