Aggiornamento agosto 2013, con l'ultima gitolite: Ora avete official specific repo hook:
è fondamentalmente solo la creazione di un collegamento simbolico in <repo.git>/hooks
che punta a qualche file all'interno di $rc{LOCAL_CODE}/hooks/repo-specific
(ad eccezione del gitolite-admin
repo)
Risposta originale (
Innanzitutto, se si utilizza gitolite V3, è possibile definire qualsiasi hook, incluso un gancio post-receive
(tranne il gancio update
, vedere using hooks): in precedenza, con gitolite V2, pre-receive
, il gancio era riservato.
Ora è possibile aggiungere un gancio copiandolo nella directory clone locali gitolite-admin/common/hooks
, e spingendo gitolite-admin
al server gitolite: gitolite farà in modo che il gancio è dichiarato per tutti repos nude che gestisce.
È possibile anche aggiungere direttamente il vostro gancio sul server in una posizione separata progettata dalla variabile $LOCAL_CODE
"rc
" ("rc
" significa definito nel gitolite.rc
config file): $LOCAL_CODE/hooks/common
. Vedi "customizing gitolite".
L'idea è assicurarsi che un aggiornamento gitolite non cancelli nessuno dei tuoi programmi personalizzati.
definire semplicemente un file di 'post-ricezione', eseguibile (chmod 755
), e copiarlo nella common/hooks
directory di vostra scelta (gitolite-admin
repo locale più git push
, o .gitolite
sul server, o $LOCAL_CODE
sul server).
Nota: il fatto che non venga visualizzato il file "post-receive.sample
" non impedisce di definire tale hook.
Se eseguito direttamente sul server, è necessario eseguire gitolite setup --hooks-only
in modo che i ganci personalizzati siano configurati su tutti i repository.
Quello che non faresti mai è di copiarlo direttamente su una delle tue directory bare-repo.git/hooks
: questo è il lavoro di gitolite per pubblicare hook "comuni" su tutto il tuo repository.
In questo modo, è possibile gestirli direttamente attraverso qualsiasi clone di gitolite-admin
repo (respingendo che repo aggiornerà qualsiasi hook che potrebbe essere cambiato).
"All nuda repo" significa che il gancio post-receive
deve sapere che spoglia repo opera su:
Si può fare da checking the value of $GIT_DIR
(insieme alla radice .git
directory del pronti contro termine a nudo su cui questo libro è in esecuzione).
Infine, per questo tipo di post-receive
gancio, vedere "Git checkout in post-receive
hook: “Not a git repository '.'
”":
è necessario definire GIT_DIR
e GIT_WORK_TREE
esplicitamente al destinazione pronti contro termine in modo che il vostro git pull
per avere successo.
GIT_WORK_TREE=/Users/me/Sites GIT_DIR=/Users/me/Sites/.git git pull
ho cercato di impostare repo-specific-ganci (v3) utilizzando il seguente: ** 1 ** ho creato 'LOCAL_CODE =>,' in "$ ENV {HOME}/gitolite/locale." rc ** 2 ** Aggiungo ''repo-specifici-hooks', 'per ENABLE array in rc, ** 3 ** Ho creato dir' local/hooks/repo-specific/'nel mio gitolite-admin, commesso e spinto che ** 4 ** Aggiungo stringa: 'opzione hook.post-receive = deploy' in conf/gitolite.conf per' testing' repo, creato file 'local/hooks/repo-specific/deploy' in conf file con 0755, e impegna e li ha spinti ... ** 5 ** Ho fatto commit/push per test repo, gancio non è stato licenziato, cosa ho fatto di sbagliato ? –
symlink anche non qui, ho provato a eseguire 'gitolite setup --hooks-only' senza alcun successo –
@eicto Ho modificato la risposta con un link al gancio specifico per il repo in gitolite: assicurati di avere l'ultima gitolite. – VonC