Gli hook git vengono spinti al telecomando quando faccio "git push"?


94

Se creo un nuovo script hook nel mio repository locale in repo / .git / hooks / post-commit e poi eseguo "git push", gli hook vengono inviati al telecomando? Quindi, quando gli altri sviluppatori eseguono "git pull" dalla stessa origine, riceveranno i miei nuovi hook?



Risposte:


80

No. Gli hook sono per repository e non vengono mai inviati. Allo stesso modo, la configurazione del repository non viene inserita, né contiene nulla .git/infoo una serie di altre cose.

Il push e il pull scambiano solo rami / tag e oggetti di commit (e qualsiasi cosa raggiungibile da un commit, ad esempio alberi, blob).


14
C'è un modo per avere ganci centrali e farli tirare su ogni clone e applicarli.
f1wade

4
@ f1wade Potresti aggiungere una .githooksdirectory che verrebbe controllata dalla versione, quindi sym-link o creare script hook wrapper dall'interno .git. La clonazione non si collegherebbe automaticamente, .githooksma una volta collegata puoi spingere e tirare nuove versioni degli script hook.
Philip Couling,

47

No, gli hook git non vengono spinti o estratti, poiché non fanno parte del codice del repository.

Fare riferimento alla documentazione per un elenco di semplici hook lato client e lato server.

Se vuoi abilitare alcuni hook per tutti i client che clonano o estraggono da un dato repository, devi aggiungere gli hook alla tua base di codice e quindi creare il tuo script per copiarli o collegarli ad essi repo/.git/hooks/.


4
ma come viene chiamato lo script di copia?
Adam Johns

6
@AdamJohns Viene chiamato dall'utente / sviluppatore, probabilmente sotto forma di un setup.shche lo sviluppatore esegue quando clona per la prima volta il repository. Dopodiché, gli aggiornamenti agli hook possono avvenire automaticamente avendo un hook che riesegue uno script aggiornandoli dopo ogni pull, per esempio. Quindi non devi fare affidamento sullo sviluppatore per farlo da solo.
cm92

4

Purtroppo no, ma poiché git 2.9 puoi metterli nella cartella .githooks (come altri menzionati) ed eseguire:

git config --local core.hooksPath .githooks/

Quindi non c'è bisogno di collegamenti simbolici o di copiare file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.