O Que É um Git Hook?
Um Git hook é um script que o Git roda automaticamente em um ponto específico do seu fluxo de trabalho, como antes de um commit ou depois de um push.
Git hooks permitem anexar comportamento personalizado a eventos do Git. Quando você faz commit, push ou merge, o Git pode rodar um script que você fornece, permitindo impor regras, rodar checks ou automatizar tarefas exatamente no momento certo. Eles são o primo local dos checks de CI.
O que são hooks
Um hook é um script executável que o Git roda quando um evento específico ocorre. Há muitos pontos de hook, antes e depois de fazer commit, antes de fazer push, depois de fazer merge, e mais. Cada um dispara em um momento definido, permitindo interceptar ou reagir àquela etapa do fluxo de trabalho.
Hooks locais versus de servidor
Hooks do lado do cliente rodam na máquina de um desenvolvedor, por exemplo para fazer lint antes de um commit. Hooks do lado do servidor rodam no remoto quando as mudanças são enviadas via push, por exemplo para rejeitar pushes que violam uma política. Os dois cobrem pontos diferentes no caminho da edição até o histórico compartilhado.
Um hook simples
Hooks ficam no diretório de hooks do repositório e só precisam ser executáveis.
#!/bin/sh
# .git/hooks/pre-commit
npm run lint || exit 1Hooks e CI/CD
Hooks dão feedback local e rápido antes que o código sequer chegue ao CI, capturando problemas simples no teclado. Mas hooks locais não têm garantia de rodar, já que ficam fora do controle de versão e podem ser pulados, então eles complementam em vez de substituir o CI. O CI permanece o gate imposto; os hooks são o aviso antecipado.
Usando hooks de forma eficaz
- Use hooks para checks locais rápidos como linting e formatação.
- Lembre-se de que hooks locais podem ser contornados; não confie só neles.
- Gerencie hooks compartilhados com uma ferramenta para que todo o time os tenha.
- Mantenha o CI como o gate autoritativo e imposto.
Principais conclusões
- Um Git hook roda um script em um ponto definido do fluxo do Git.
- Hooks do lado do cliente e do lado do servidor cobrem eventos diferentes.
- Hooks dão feedback local rápido, mas o CI permanece o gate imposto.