Cansado de escrever mensagens de commit? Este projeto utiliza um simples hook do Git para gerar mensagens de commit claras, concisas e padronizadas usando o poder das APIs da OpenAI ou do Google Gemini.
Ele se integra perfeitamente ao seu fluxo de trabalho, analisando suas alterações (git diff) e sugerindo uma mensagem de commit informativa, seguindo o padrão Conventional Commits.
(Exemplo de como o editor abre com a mensagem já preenchida)
- Geração Automática: Cria mensagens de commit com base nas suas alterações em stage.
- Suporte a Múltiplos Provedores: Escolha entre a API da OpenAI (ex: GPT-4o mini) ou do Google (ex: Gemini 1.5 Flash).
- Padrão Profissional: As mensagens são formatadas seguindo o padrão Conventional Commits, melhorando a legibilidade do seu histórico.
- Integração Perfeita: Funciona diretamente com o comando
git commit. A experiência é ainda melhor comgit commit -v. - Fácil de Configurar: Apenas um arquivo e uma variável de ambiente são necessários.
Antes de começar, garanta que você tenha os seguintes softwares instalados:
- Git: O sistema de controle de versão.
- cURL: Ferramenta para fazer requisições web. Geralmente já vem instalada na maioria dos sistemas.
- jq: Um processador de JSON para a linha de comando. É essencial para o funcionamento do script.
- No Debian/Ubuntu:
sudo apt-get install jq - No macOS (com Homebrew):
brew install jq
- No Debian/Ubuntu:
- Chave de API: Você precisará de uma chave de API de um dos provedores:
- OpenAI: Obtenha sua chave no painel da OpenAI.
- Google Gemini: Obtenha sua chave no Google AI Studio.
A configuração é feita dentro do seu repositório Git local.
Se você quiser ter os scripts como parte de um projeto, pode clonar este repositório. Caso contrário, apenas copie o conteúdo do script desejado. Para este guia, vamos supor que você clonou o repositório.
git clone [email protected]:unilogica/git-hooks-ai.git
cd git-hooks-aiEste repositório contém dois scripts:
openai/prepare-commit-msggemini/prepare-commit-msg
Você precisa criar um link simbólico de um deles para o diretório de hooks do seu projeto. Dentro da pasta do seu projeto, execute:
Para usar OpenAI:
ln -s ../../git-hooks-ai/openai/prepare-commit-msg .git/hooks/prepare-commit-msgOU
Para usar Google Gemini:
ln -s ../../git-hooks-ai/gemini/prepare-commit-msg .git/hooks/prepare-commit-msgEste método com link simbólico é ótimo porque qualquer atualização que você fizer no script (via git pull) será refletida automaticamente no hook. Porém se preferir simplesmente copiar / colar fique a vontade.
O Git exige que os arquivos de hook sejam executáveis.
chmod +x .git/hooks/prepare-commit-msgO script lê a chave de API de uma variável de ambiente. Você deve adicioná-la ao seu arquivo de configuração de shell (como .bashrc, .zshrc, etc.) para não precisar defini-la toda vez.
Se você escolheu OpenAI:
export OPENAI_API_KEY="sk-SUA-CHAVE-DA-OPENAI-AQUI"Se você escolheu Google Gemini:
export GEMINI_API_KEY="SUA-CHAVE-DO-GEMINI-AQUI"Após adicionar a linha, reinicie seu terminal ou recarregue a configuração com source ~/.bashrc (ou o arquivo correspondente).
Você pode facilmente alterar o modelo de IA editando o script. Procure a linha que define o modelo e substitua pelo de sua preferência (lembre-se de verificar a compatibilidade com a API).
- No script da OpenAI, a linha é:
--arg model "gpt-4o-mini" - No script do Gemini, a linha é:
"https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=$GEMINI_API_KEY"
O fluxo de trabalho é o mesmo de sempre, mas com um toque de mágica.
- Faça suas alterações no código.
- Adicione os arquivos ao stage:
git add . - Execute o comando de commit. Recomendamos usar a flag
-v(verbose) para ver o diff junto com a mensagem sugerida.Ou, se quiser adicionar todas as alterações em arquivos já monitorados:git commit -v
git commit -av
- Seu editor de texto padrão será aberto, já preenchido com uma mensagem de commit gerada pela IA.
- Revise a mensagem. Você pode editá-la como quiser.
- Salve e feche o editor para finalizar o commit. Pronto!
- Nada acontece:
- Verifique se o hook tem permissão de execução (
ls -l .git/hooks). - Confirme se o link simbólico foi criado corretamente.
- Certifique-se de que
jqestá instalado (command -v jq).
- Verifique se o hook tem permissão de execução (
- Recebo um erro sobre a API:
- Verifique se a variável de ambiente (
OPENAI_API_KEYouGEMINI_API_KEY) está definida e exportada corretamente (echo $SUA_VARIAVEL). - Confirme se a sua chave de API está ativa e se você tem créditos ou um plano de faturamento ativo no provedor.
- Verifique se a variável de ambiente (
Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.
