Como Utilizar Git Hooks?

Como Utilizar Git Hooks?

Desenvolver uma aplicação de qualidade é um processo complexo. Para fazer isso, nós utilizamos ferramentas que são complementares ao processo de codificação.

Um desses processos é a automação. Isso ocorre devido à necessidade dos desenvolvedores e sysadmins (administradores de sistema) de reduzir o tempo de implementação. Git é uma das ferramentas mais populares específicas para essa finalidade.

E é por isso que, neste tutorial, nós iremos mostrar para você como utilizar Git Hooks para aprimorar o seu projeto de hospedagem em VPS!

Git Hooks é uma utilidade interna que vai melhorar a maneira como usamos o Git. Vamos aprender exatamente como ele funciona!

O Que é Git?

Antes de falarmos sobre Hooks, vamos entender rapidamente o que é Git.

Git é um software de código-aberto, de controle de versões de uma aplicação. Ao utilizá-lo, nós podemos monitorar o desenvolvimento de um software detalhadamente.

Git é muito popular entre desenvolvedores, e a maioria dos projetos de código aberto utilizam essa ferramenta.

O Que São Git Hooks?

Com o Git, nós podemos criar ramificações de desenvolvimento (chamados Git Branches), registrar modificações e ter um controle absoluto sobre as versões. Entretanto, é possível automatizar esse processo. A automação do Git funciona no nível dos programas e da implementação. É para isso que os Hooks são utilizados.

Git Hooks são shell scripts executados automaticamente antes ou depois que o Git execute um comando importante, como “Commit” ou “Push”. Para um Hook funcionar, é necessário que o script tenha permissões de execução no sistema Unix. Usando esses scripts, nós podemos automatizar algumas ações.

O Git inclui exemplos de Git Hooks assim que o repositório local é iniciado. Deve ser ressaltado que sites como o Github ou Gitlab não permitem o seu uso em primeira instância. É por isso que eles são usados principalmente em ambientes de desenvolvimento locais ou privados.

Como Usar Git Hooks

Hooks são armazenados na pasta .git/hooks/ para cada projeto copiado, ou em um repositório local recém criado. Lá, nós podemos encontrar uma série de exemplos de Hooks, os quais são ótimos pontos de partida.

Para ativar um Hook, é necessário apenas criar um arquivo e salvá-lo na pasta .git/hooks/. Entretanto, o nome do arquivo é pré-definido pelo Git. Muitos dos Hooks que podemos usar são:

Git HookComando Git Descrição
applypatch-msg.samplegit amQuando uma mensagem de patch é alterada.
commit-msg.samplegit commitPara definir uma mensagem de commit.
fsmonitor-watchman.samplelaunch watchmanPara integrar watchman.
post-update.samplegit pushAtualizar todos os dados após push.
pre-applypatch.samplegit amAntes de aplicar um patch.
pre-commit.samplegit commitAntes de executar um committing.
prepare-commit-msg.samplegit commitQuando uma mensagem commit for definida.
pre-push.samplegit pushAntes de realizar um envio.
pre-rebase.samplegit rebaseAntes de realizar um pass ou merge.
pre-receive.samplegit pushQuando executamos push e obtemos data do repositório remoto.
update.samplegit pushAo atualizar os dados remotos com push.

Como nós podemos ver, cada Hook é associado a um comando no Git. Com isso, podemos levá-los em consideração quando for conveniente fazer um Hook.

exemplo das notificações de pré-commit dos git hooks

Exemplos de Git Hook

O uso de Hooks é muito amplo, mas ter conhecimento em Bash e outras linguagens ,como Python ou Ruby, são necessárias para usar com todo o seu potencial. Aqui estão alguns exemplos básicos:

Informações Sobre Ações de Commit

Esse exemplo nos mostra a informação de uma ação de Commit. Faça um arquivo chamado prepare-commit-msg dentro da pasta .git/hooks/ do seu repositório. Em seguida, escreva o seguinte script:

#!/bin/sh

SOB=$(git config github.user)
grep -qs "^$SOB" "$1" || echo ". Cambio por @$SOB" >> "$1"

Feito isso, salve e defina as permissões de execução para o arquivo:

:~$ chmod +x prepare-commit-msg

Com este simples Hook, nós receberemos informações relevantes para todas as ações de commits que forem feitas no repositório, instantaneamente.

Gerar documentação antes do envio das modificações

O comando Hook pre-push permite gerar a documentação do nosso código caso tenhamos um gerador instalado (no exemplo usamos o doxygen). Sempre que fizermos uma modificação, a documentação irá ser atualizada automaticamente.

Criar um um arquivo chamado pre-push na mesma pasta de antes (.git/hooks/) e adicionar o script:

#!/bin/bash

doxygen Doxyfile
git add docs/
git commit -m "Update documentation ($(date +%F@%R))"

Salve o arquivo na pasta e, em seguida, configure a permissão de execução:

:~$ chmod +x pre-push

Encontre e corrija os espaços em branco em Commits

Esse tipo de Git Hook de pre-commit é bastante simples de fazer. Basta criar um arquivo chamado “pre-commit” e adicionar o seguinte script:

#!/bin/bash -l

.git/hooks/pre-commit-master-no-no
if [[ $? == 1 ]]
then
exit 1
fi

.git/hooks/pre-commit-debugger
.git/hooks/pre-commit-trailing-spaces
.git/hooks/pre-commit-images
.git/hooks/pre-commit-pair

Agora os espaços em branco irão ser encontrados e corrigidos para todos os Commits.

Conclusão

O Git é uma ferramenta fundamental para os desenvolvedores de hoje em dia. A criação de Git Hooks é uma ótima maneira de aprimorar essa ferramenta ainda mais. Nesse tutorial, revisamos os conceitos fundamentais da automação de processos Git com Hooks.

Fazer um script para Git Hooks pode ser complicado se você não tiver uma base sólida de conhecimento de linguagem de programação, como Bash, por exemplo.

Você deu o primeiro passo na jornada de aprendizado para aprender como usar Git Hooks. Visite a documentação oficial do Git Hook e continue o seu processo de aprendizagem!

Author
O autor

Ariane G.

A Ariane é SEO Team Leader com experiência em conteúdo, localização e SEO. Seu desafio é levar a Hostinger ao topo dos resultados no Brasil, França e Reino Unido. Eventualmente ela compartilha seu conhecimento no blog e nos tutoriais da Hostinger e no tempo livre ela gosta de explorar lugares novos e viver intencionalmente.