Os git hooks são colocados no controle remoto quando eu 'git push'?

96

Se eu criar um novo script de gancho em meu repositório local em repo / .git / hooks / post-commit e executar "git push", os ganchos serão colocados no remoto? Então, quando os outros desenvolvedores executarem "git pull" da mesma origem, eles obterão meus novos ganchos?

slacy
fonte
3
Talvez isto ajude stackoverflow.com/questions/3462955/…
René Höhle
Relacionado (com respostas muito úteis): Os scripts de gancho do Git podem ser gerenciados junto com o repositório?
Marc.2377 de

Respostas:

82

Não. Ganchos são por repositório e nunca são enviados. Da mesma forma, a configuração do repo também não é enviada, nem há nada dentro .git/info, ou uma série de outras coisas.

O push e o pull apenas trocam branches / tags e objetos de commit (e qualquer coisa acessível a partir de um commit, por exemplo, árvores, blobs).

Lily Ballard
fonte
14
Existe uma maneira de colocar ganchos no centro e puxá-los em cada clone e aplicá-los.
f1wade
4
@ f1wade Você poderia adicionar um .githooksdiretório que seria controlado por versão e então sym-link ou criar scripts de gancho de wrapper de dentro .git. A clonagem não seria .githooksconectada automaticamente, mas uma vez conectada, você pode enviar e receber novas versões dos scripts de gancho.
Philip Couling
48

Não, os ganchos do git não são empurrados ou puxados, pois não fazem parte do código do repositório.

Consulte a documentação para obter uma lista de ganchos simples do lado do cliente e do lado do servidor.

Se você deseja habilitar alguns ganchos para todos os clientes que clonam ou extraem de um determinado repositório, você deve adicionar os ganchos à sua base de código e, em seguida, criar seu próprio script para copiá-los ou de onde criar um link repo/.git/hooks/.

Marco Leogrande
fonte
4
mas como o script de cópia é chamado?
Adam Johns
6
@AdamJohns É chamado pelo usuário / desenvolvedor, provavelmente na forma de um arquivo setup.shque o dev executa quando clona pela primeira vez o repositório. Depois disso, as atualizações dos ganchos podem acontecer automaticamente, tendo um gancho que reexecuta um script, atualizando-os após cada pull, por exemplo. Assim, você não precisa depender do desenvolvedor para fazer isso sozinho.
cm92 de
5

Infelizmente não, mas desde o git 2.9 você pode colocá-los na pasta .githooks (como outros mencionaram) e executar:

git config --local core.hooksPath .githooks/

Portanto, não há necessidade de links simbólicos ou arquivos de cópia.

Marco Medrano
fonte