actualización de agosto de 2013, con la última gitolite: Ahora tiene official specific repo hook:
es básicamente crear un enlace simbólico en <repo.git>/hooks
apuntando a algún archivo dentro $rc{LOCAL_CODE}/hooks/repo-specific
(excepto el gitolite-admin
repo)
Original answer (
Primero, si está utilizando gitolite V3, puede definir cualquier gancho, incluido un gancho post-receive
(excepto el gancho update
, consulte using hooks): anteriormente, con gitolite V2, pre-receive
se reservó el enganche.
Ahora puede agregar un gancho copiándolo en el directorio local de gitolite-admin/common/hooks
clon, y empujando gitolite-admin
de vuelta al servidor gitolite: gitolite se asegurará de que el gancho se declara para todos repos desnudos que administra.
También se pueden añadir directamente a su gancho en el servidor en un lugar separado diseñado por el "rc
" variable de $LOCAL_CODE
("rc
" significa definido en su gitolite.rc
config file): $LOCAL_CODE/hooks/common
. Ver "customizing gitolite".
La idea es asegurarse de que una actualización de gitolite no borre ninguno de sus programas personalizados.
definir simplemente un archivo de 'post-recepción', ejecutable (chmod 755
), y copiarlo en el directorio common/hooks
de su elección (gitolite-admin
repo local más git push
, o .gitolite
en el servidor, o $LOCAL_CODE
en el servidor).
Nota: el hecho de que no ve un 'post-receive.sample
' archivo no impide que defina ese gancho.
Si lo hace directamente en el servidor, necesita ejecutar gitolite setup --hooks-only
para que sus ganchos personalizados se configuren en todos repositorios desnudos.
Lo que nunca haría es copiarlo directamente en uno de su directorio bare-repo.git/hooks
: ese es el trabajo de gitolite para publicar ganchos "comunes" para todo su repositorio desnudo.
De esta manera, puede administrarlos directamente a través de cualquier clon del repositorio gitolite-admin
(al rechazar ese repositorio se actualizará cualquier gancho que pueda haber cambiado).
"Todo repo desnuda" significa que su post-receive
gancho debe saber lo reporto al descubierto que opera en:
Usted puede hacer que al checking the value of $GIT_DIR
(establecido en el directorio raíz de la cesión temporal .git
desnudo sobre el que se ejecuta este gancho).
Por último, para este tipo de post-receive
gancho, consulte "Git checkout in post-receive
hook: “Not a git repository '.'
”":
es necesario definir GIT_DIR
y GIT_WORK_TREE
explícitamente al destino repo para que su git pull
para tener éxito.
GIT_WORK_TREE=/Users/me/Sites GIT_DIR=/Users/me/Sites/.git git pull
Me trataron de configuración de pase-specific-ganchos (v3) utilizando el siguiente: ** 1 ** creé 'LOCAL_CODE =>, 'en "$ ENV {HOME}/gitolite/local". rc ** 2 ** Agregué ''repo-specific-hooks',' a ENABLE array en rc, ** 3 ** Creé dir 'local/hooks/repo-specific /' en mi gitolite-admin, comprometido y empujado que ** 4 ** Agregué una cadena: 'opción hook.post-receive = deploy' en conf/gitolite.conf para' testing' repo, archivo creado 'local/hooks/repo-specific/deploy' en conf archivo con 0755, y cometido y empujado ellos ... ** 5 ** Hice commit/push para prueba repo, gancho no se disparó, lo que hice mal ? –
symlink tampoco está aquí, intenté ejecutar 'configuración de gitolite --hooks-only' sin éxito –
@eicto He editado la respuesta con un enlace al enganche específico de repo en gitolite: asegúrese de tener la última gitolita. – VonC