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!
Conteúdo
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 Hook | Comando Git | Descrição |
applypatch-msg.sample | git am | Quando uma mensagem de patch é alterada. |
commit-msg.sample | git commit | Para definir uma mensagem de commit. |
fsmonitor-watchman.sample | launch watchman | Para integrar watchman. |
post-update.sample | git push | Atualizar todos os dados após push. |
pre-applypatch.sample | git am | Antes de aplicar um patch. |
pre-commit.sample | git commit | Antes de executar um committing. |
prepare-commit-msg.sample | git commit | Quando uma mensagem commit for definida. |
pre-push.sample | git push | Antes de realizar um envio. |
pre-rebase.sample | git rebase | Antes de realizar um pass ou merge. |
pre-receive.sample | git push | Quando executamos push e obtemos data do repositório remoto. |
update.sample | git push | Ao 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.
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!
Comentários
May 17 2020
Olá tudo bom, estou aprendendo agora esse conceito de hook e gostaria de saber, o que vc quis dizer com os sites GitHub e Gitlab não permitem o seu uso em primeira instância do hook?
May 26 2020
Oi, Eduardo. Tudo legal? Significa que você só pode usar e fazê-los funcionar em ambientes de desenvolvimento, de programação ou de servidores. Fora destes locais, eles não têm muita utilidade, a não ser serem fontes de comandos para usuários usarem nos seus respectivos ambientes.
August 30 2023
Eu consigo subir esses hooks para o meu repositório remoto para que todos os clones também venham com eles configurados??
September 08 2023
Oi, João! Os hooks são sempre locais, em qualquer repositório Git, e não são copiados para novos repositórios com o comando git clone. Você pode ler mais sobre isso aqui: https://www.atlassian.com/git/tutorials/git-hooks. Qualquer dúvida estamos por aqui!