Como automatizar mensagens de commit no Git
(insight.infograb.net)*Quando escrever mensagens de commit no git vira um incômodo
- Mensagens de commit com emoji e número da issue são fáceis de rastrear e agradáveis de visualizar
- But quanto mais longa e complexa for a mensagem de commit, mais incômodo é escrever toda vez e mais frequentes são os erros
- Ter que procurar o emoji adequado toda vez é um tormento
*Forçando mensagens de commit do git com Git Hooks
- Git Hooks é um recurso que executa scripts definidos por nós quando ocorrem eventos relacionados ao Git
- Esse recurso se divide em hooks de servidor e hooks de cliente
*Hook de servidor: usando o recurso push rule do Git
- Se você colocar no hook
pre-receiveum script que verifica a mensagem de commit, o push para o servidor será bloqueado - No GitLab, é possível usar o recurso push rule para verificar mensagens de commit com expressões regulares
- Ao detectar uma mensagem de commit que viola a expressão regular, esse push é rejeitado e gera um erro
*Hook de cliente: verificar antes de fazer push
- Antes da conclusão final do commit, é possível criar um script no hook
commit-msgpara verificar a mensagem de commit - Se quiser modificar a mensagem de commit, escreva um script relacionado no hook
prepare-commit-msg
*Como a Infograb automatiza mensagens de commit
- A empresa criou um sistema de automação de mensagens de commit usando Husky e Commitlint
- Husky é um módulo npm que ajuda a gerenciar Git Hooks. Ele cria arquivos de hook com scripts dentro do diretório
.husky. Depois, ao executar o comandonpx husky install, esses scripts são registrados no git - commitlint é uma ferramenta para gerenciar facilmente convenções de commit e verificar mensagens de commit. A convenção de commit definida pela equipe é escrita em formato JSON. Depois, usa-se o comando
commitlintpara validar a mensagem
1)Definir a convenção de commit no formato do commitlint
- Com base na estrutura básica da mensagem de commit, definir no arquivo
commitlint.config.tsos atributos adequados para cada equipe
2)Registrar o commitlint no Husky
- Registrar o comando
commitlintno hookcommit-msg. Inserir o script no arquivo.husky/commit-msg
3)Adicionar automação
- Automatizar tarefas como anexar emojis ou inserir números de issue
- Na equipe de produto da Infograb, ao digitar apenas o tipo (
feat,fix), o emoji é adicionado automaticamente, a primeira letra do tipo é corrigida automaticamente para maiúscula e, se houver um número de issue na branch, ele é anexado automaticamente ao footer - O script de automação pode ser colocado no hook
prepare-commit-msg
2 comentários
Também fica bom usar junto com o commitizen.
Ótima ferramenta, obrigado.