2012-08-30 24 views
7

Dopo Spingo il mio repo git locale al server:gitolite postale riceve gancio per specifiche repo nudo

$ git push origin master 

voglio il repo nuda sul server (dopo aver ricevuto la spinta da me) a:

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

ho guardato alcune domande qui e accennano ganci in $ HOME/gitolite/ganci,

ma ecco quello che sto lavorando con:

012.
[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/ 

Come si aggiunge un hook di post-ricezione per un repository bare specifico?

Se vado nel mio repo nuda:

[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* 

non vedo un gancio post-ricezione. Cosa dà?

risposta

7

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

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

+0

symlink anche non qui, ho provato a eseguire 'gitolite setup --hooks-only' senza alcun successo –

+0

@eicto Ho modificato la risposta con un link al gancio specifico per il repo in gitolite: assicurati di avere l'ultima gitolite. – VonC