Introdução
Se você leu bem, nunca mais vou escrever um commit, bom, isso não é totalmente verdade, vou sim escrever, mas vou me preocupar menos em escrevê-lo… vou fazê-los de uma maneira mais leve, mais despreocupada.
Não sabe o que quero dizer? Pois vou passar disto
para isto

sem fazer nada, apenas escrevendo algo básico como ‘changes’ ou nem isso.
A importância de uma boa mensagem de commit
Fazer commit é algo muito simples que fazemos constantemente todos os dias, mas será que damos a relevância que deve ter? Deixe-me falar sobre a importância dos commits,
Você pode pensar que não é para tanto, mas tenho que dizer que uma boa mensagem de commit é essencial para manter um projeto ordenado e compreensível. Todos sabemos que no desenvolvimento de software uma grande parte do tempo é destinada à manutenção e leitura do código.
Imagine o quanto essa tarefa pode ser facilitada com mensagens de commit claras e descritivas.
Além disso, em ambientes de trabalho em grupo, onde há mais de uma pessoa, um bom histórico de commits é como um livro aberto da evolução do projeto. E bom, mesmo se você estiver programando sozinho. Tudo isso ajuda a entender por que certas mudanças foram feitas e também facilita o trabalho em equipe.
Minha solução
Não penso que os programadores escrevam commits ruins ou que haja um problema a nível geral, mas entendo que muitas vezes, estamos tão concentrados no código que não paramos para escrever uma mensagem de commit perfeita. Seja porque queremos subir rápido para verificar se passa na pipeline ou por qualquer outro motivo que nos faça distrair na hora de commitar.
É por isso que criei um script, super básico, que cada vez que você realiza um commit, passa a sua mensagem pela API gratuita do Gemini e a reescreve seguindo as normas que você especificar, ou seja, um prompt personalizado.
O script utiliza uma dependência de Python que por trás faz um fetch ao Gemini, é fácil de usar porque só precisa da sua API key do Gemini, mas o código poderia ser modificado para fazer fetch à sua API favorita de qualquer LLM.
A “mágica” para que se execute cada vez que commitamos encontra-se nos hooks do git, não precisam se preocupar com isso, já que deixei outro script no código que adiciona aos projetos de um diretório que você especificar o hook necessário para executar o nosso código. À parte modifica a configuração para que nos projetos novos se aplique por padrão isso, de maneira que nunca mais seria necessário executá-lo.
Personalização
E o melhor de tudo é que este sistema é totalmente configurável. Você pode ajustar o prompt para que siga os padrões da sua empresa, da sua equipe ou simplesmente os que você preferir. Eu por exemplo coloquei que siga os padrões de Conventional Commits, mas literalmente você pode dizer que responda com insultos ou uma frase muito pouco profissional.
Além disso, adicionei uma flag muito fácil de modificar no script caso você queira que também se passe o código modificado (ou seja, o git diff) para a API. Isto é útil se você quer que a mensagem de commit tenha contexto sobre as mudanças realizadas. Por exemplo, poderia resumir as mudanças mais importantes ou destacar alguma função chave que você tenha implementado.
Isso sim, coloquei numa flag no código porque entendo que por temas de privacidade ou segurança não é possível enviar o código para uma API externa. Não há problema, simplesmente não ative a flag e o script só trabalhará com a mensagem que você fornecer, sem compartilhar nenhum fragmento de código.
Embora bom, segundo as políticas de privacidade do Google, o Gemini não usa os dados de conversas para treinar os seus modelos, mas isso já é coisa vossa, eu aí não me meto.

Deixo mais info sobre isso por aqui
https://cloud.google.com/vertex-ai/generative-ai/docs/data-governance?hl=pt-br
https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/multimodal-faqs?hl=pt-br
E o que ganho com tudo isso?
Automatizar a geração de mensagens de commit não só poupa tempo, como também reduz a carga cognitiva. O nosso cérebro tem uma capacidade limitada para tomar decisões e se concentrar em tarefas complexas. Ao delegar tarefas repetitivas e menos críticas, como polir mensagens de commit, liberamos recursos mentais para o que realmente importa: resolver problemas e escrever código de qualidade.
Nah, na verdade não sei, simplesmente estava entediado e parecia divertido e às vezes tenho preguiça de commitar como se deve… nada mais.
Código
👉 https://github.com/edunavajas/git-commit-enhancer
Não vou entrar em detalhes de baixo nível sobre o que vocês têm que fazer para instalá-lo porque está tudo no README, mas basicamente, para que o script funcione vocês devem primeiro instalar as dependências que se faz a partir do arquivo chamado dependencies, é óbvio não? Bom, a não ser que você tenha Windows, então terá que seguir alguns passos manuais… sinto muito, não é minha culpa que vocês programem em Windows… E por último tenho aí outro script de Python para o “Setup” para que possam indicar uma pasta de repositórios já existentes para que se aplique a eles o hook de que falamos antes.
Não sei se servirá a alguém, mas a mim ajuda muito no meu dia a dia!



O que você achou?
Deixe sua opinião, pergunta ou sugestão. Os comentários são sincronizados com GitHub Discussions .