Executando verificação de segurança...
4

Usando git hooks

Boa noite, acho que os git hooks são subutiliados e resolvi vir aqui divulgá-los.

O que são?

Os git hooks são scripts que são executados quando algum evento do git acontece, por exemplo, quando você roda git push ou git commit. Existem hooks que são executados na máquina do cliente e outros na máquina remota.

O uso dos hooks é bem variado, o mais comum do usos é para validação de mensagens de commit, ou do código/modificação, enviar emails e abrir ou fechar tickets num sistema de bug tracking. Quem já contribuiu pacotes para o AUR teve contado com esses hooks, eles os usam maravilhosamente bem: validam arquivos, mensagens de commit, permissões etc.

Como são

Você pode dar uma olhada neles inspecionando a pasta .git/hooks em qualquer repositório que você possuir. Os exemplos são scripts shell ou perl, porem podem ser arquivos binários, esses arquivos são executados para determinados eventos e o git passa informações para eles pelo stdin.

Dois exemplos:

commit-msg

Esse hook roda na máquina do cliente quando ele executa um git commit, esse hook tem acesso à mensaagem de commit e pode modificá-la. Se o hook returnar status diferente de zero o commit é abortado, isso é ótimo para validar commits e não permitir que usuários escrevam mensagens que não estão de acordo com alguma norma do projeto, por exemplo o husky.

post-receive

Esse hook é executado quando um usuário roda um git push, ele é o último hook a ser executado e o resultado dele não altera o resuldado do git push. Esse script recebe como entrada o seguinte: oldref newref ref, que são as referencias antigas, novas e o nome delas. Esse hook é utilizado normalmente para gerar páginas estáticas do git, atualizar status de tickets e enviar emails de commits.

Meu caso de uso

Tenho um projeto chamado dovel email (dovel.email) e decidi criar as paginas web do git usando hooks. Assim eu consegui criar um index que lista todos os repos do projeto e cada projeto tem seus commits, tags, branches e arquivos gerados por scripts shell. O esquema é fantástico, por isso decidi falor sobre ele aqui, no servidor não é necessário nenhuma instalação, somente precisa do hook.

Com isso meus usuários ficam por dentro do desenvolvimento do projeto, e eu consigo desenvolver de uma forma simples: um git push atualiza as páginas, ou seja, 0 fricção.

Veja o index do git: git e o repositório com os hooks: scripts para ver o resultado.

Por quê?

Acho que isso é uma questão pessoal acima de tudo, porém alguns pontos são importantes de se observar:

  • Isso te torna independente de 3os como o github
  • Você contribui para a descentralização da web
  • Traz os dados para o seu lado e com isso ganha privacidade
  • É mais democrático o uso de email para contribuições e os hooks ajudam muito

Esses foram os principais motivos para eu iniciar essa prática, não é fácil, porém acredito ser um passo na direção de uma internet mais saudável. A documentação oficial se encontra no rodapé em [1].


Referências

Carregando publicação patrocinada...