2012-08-30 13 views
7

Después empujo mi repositorio git local al servidor:posterior gitolite recibir gancho para repo desnuda específica

$ git push origin master 

Quiero el repositorio desnudo en el servidor (después de haber recibido el empuje de mí) a:

$ cd /Users/me/Sites 
$ git pull 
$ exit 

que he mirado algunas preguntas aquí y mencionan ganchos ganchos en $ HOME/gitolite /,

pero esto es lo que estoy trabajando con:

[email protected]:gitolite $ pwd 
/Users/git/gitolite 
[email protected]:gitolite $ ls 
.git/     README.txt   install* 
CHANGELOG    check-g2-compat*  src/ 
COPYING    convert-gitosis-conf* t/ 

¿Cómo agrego un gancho posterior a recibir por un acuerdo de recompra desnuda específico?

Si entro en mi repo desnudo:

[email protected]:bare-repo.git $ ls hooks 
applypatch-msg.sample*  pre-rebase.sample* 
commit-msg.sample*   prepare-commit-msg.sample* 
post-update.sample*  [email protected] 
pre-applypatch.sample*  update.sample* 
pre-commit.sample* 

no veo un gancho posterior a recibir. ¿Lo que da?

Respuesta

7

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 
+1

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 ? –

+0

symlink tampoco está aquí, intenté ejecutar 'configuración de gitolite --hooks-only' sin éxito –

+0

@eicto He editado la respuesta con un enlace al enganche específico de repo en gitolite: asegúrese de tener la última gitolita. – VonC

Cuestiones relacionadas