Como configurar hooks no Git para automatizar tarefas?
Os hooks no Git são scripts que permitem executar ações automáticas antes ou depois de operações como commits, merges e pushes. Eles são úteis para validar código, rodar testes ou aplicar formatações automaticamente.
1. Onde ficam os hooks no Git?
Os hooks do Git ficam armazenados na pasta .git/hooks
dentro do repositório. Para visualizar os hooks padrão, use:
ls .git/hooks
Você verá arquivos como pre-commit.sample
, pre-push.sample
e outros.
2. Criando um hook personalizado
Para criar um hook que impede commits com mensagens vazias, edite o arquivo .git/hooks/commit-msg
:
nano .git/hooks/commit-msg
E adicione o seguinte código:
#!/bin/sh
if [ -z "$(cat $1)" ]; then
echo "Erro: A mensagem de commit não pode ser vazia!"
exit 1
fi
Agora, torne o script executável:
chmod +x .git/hooks/commit-msg
Sempre que tentar fazer um commit sem mensagem, ele será bloqueado.
3. Criando um hook para rodar testes antes do push
Se quiser rodar testes antes de enviar código para o repositório, edite o arquivo .git/hooks/pre-push
:
nano .git/hooks/pre-push
E adicione:
#!/bin/sh
echo "Rodando testes antes do push..."
if ! ./run-tests.sh; then
echo "Erro: Os testes falharam! Push cancelado."
exit 1
fi
Isso impede o push caso os testes falhem.
Por que configurar hooks no Git melhora a qualidade do código?
Os hooks no Git são essenciais para automatizar tarefas e melhorar a qualidade do código. Em times grandes, garantir que todos os commits seguem um padrão é fundamental para evitar problemas no desenvolvimento.
Um dos usos mais comuns dos hooks é rodar linters antes dos commits, garantindo que o código siga as boas práticas da equipe. Outro exemplo é impedir pushes para a branch principal sem revisão, evitando que código com erros vá para produção acidentalmente.
Algumas aplicações:
- Executar testes antes de enviar código para o repositório
- Impedir commits com mensagens vazias ou mal formatadas
- Rodar linters automaticamente antes de commits
- Evitar push de código quebrado para a branch principal
- Automatizar deploys e outras integrações contínuas
Dicas para quem está começando
- Antes de modificar um hook, faça um backup do arquivo original.
- Os hooks são scripts, então certifique-se de torná-los executáveis com 'chmod +x'.
- Para compartilhar hooks com a equipe, utilize ferramentas como Husky (para projetos Node.js).
- Se um hook estiver bloqueando commits ou pushes de forma errada, você pode desativá-lo temporariamente renomeando o arquivo.
- Teste os hooks localmente antes de aplicá-los em um projeto compartilhado.
Contribuições de Tatiane Freitas