Monitoramento Automático de Alterações no Projeto
Este projeto implementa um sistema para monitorar e versionar automaticamente mudanças em um repositório Git, evitando commits desnecessários causados por alterações irrelevantes como espaços ou linhas em branco.
Evitar que o script acione commits automáticos para mudanças temporárias ou irrelevantes. A detecção considera apenas modificações realmente relevantes no conteúdo do código ou arquivos do projeto.
-
Snapshot: varre todos os arquivos no diretório, detectando qualquer modificação, mesmo fora do controle do Git. Isso não seria tecnicamente uma melhor abordagem, só apresento para deixar em aberto as possibilidade
-
git diff: considera apenas arquivos rastreados no repositório e ignora mudanças irrelevantes como espaços ou linhas em branco.
Para evitar notificações por mudanças irrelevantes (como quebras de linha temporárias ou espaços removidos em seguida), a estratégia é detectar apenas alterações realmente novas comparando o estado do último commit com o estado atual.
-
Tirar um snapshot (hash) do repositório no início.
-
Monitorar mudanças usando:
-w / --ignore-all-spaceIgnora todas as mudanças de espaço em branco ao comparar--unified=0Com =0, ele mostra apenas as linhas alteradas, nada maisHEADÉ a referência para o último commit no branch atual.--ignore-blank-lines: ignora linhas em branco.--ignore-space-change: ignora diferenças de espaços e indentação.
-
Quando detectar diferença relevante:
- Executar
git add . - Executar
git commit -m "mensagem" - Executar
git push
- Executar
O comando está comparando as alterações ainda não commitadas com o último commit feito
Resumo funcional
git diff -w --unified=0 --ignore-blank-lines --ignore-space-change HEAD
Observação: é possível adicionar etapas extras (build, testes, linting) conforme a complexidade do projeto.
- Inclusas: mudanças que afetam o conteúdo real do código ou arquivos rastreados.
- Ignoradas: ajustes de indentação, linhas em branco ou espaços extras.
- Commit automático somente se o número de linhas modificadas (adições + remoções) for maior que ou igual 5.
- Esse limite pode ser ajustado conforme a necessidade (por exemplo, exigir no mínimo 5 linhas modificadas).
- Também é possível ajustar o intervalo entre verificações para controlar a frequência de acionamento.
Guia rápido para instalar e executar o script a partir de qualquer lugar no terminal.
Escolha um diretório para guardar seus scripts pessoais:
mkdir -p ~/scripts
mv assitant_commit ~/scripts/Permite rodar o script como um comando simples:
ln -s ~/scripts/assitant_commit.py ~/.local/bin/assitant_commitEdite o arquivo de configuração do shell (.zshrc):
nano ~/.zshrcAdicione a linha:
export PATH="$HOME/.local/bin:$PATH"source ~/.zshrcmonitor_repoDica: é possível renomear o comando no passo do link simbólico para algo mais curto, como mon ou pushauto.