Skip to content

feat(git): implementar analisador de estado do repositório Git - #9

Merged
joaooncode merged 1 commit into
mainfrom
feat/git-status-analyzer
Aug 30, 2026
Merged

joaooncode merged 1 commit into
mainfrom
feat/git-status-analyzer

Conversation

@joaooncode

Copy link
Copy Markdown
Owner

Descrição

Implementa o pacote \internal/git\ para consultar e inspecionar o status do repositório Git local. Permite ao \�nvguard\ identificar se arquivos candidatos a .env\ estão rastreados no índice/histórico (tracked), em preparação para commit (staged) ou protegidos pelo .gitignore.

Closes #2


🛠️ Tipo de Alteração

  • \ eat: Nova funcionalidade
  • \ ix: Correção de bug

  • efactor: Refatoração de código sem alteração no comportamento
  • \perf: Melhoria de performance
  • \docs: Alteração ou adição na documentação
  • \style: Formatação, linting, imports (sem mudança de lógica)
  • \ est: Adição ou ajuste de testes automatizados
  • \chore: Dependências, scripts ou configurações gerais

🚀 Alterações Realizadas

  • Estruturas & Interfaces (\internal/git/git.go):
    • Definição do modelo \FileStatus\ (\IsRepo, \IsTracked, \IsStaged, \IsIgnored).
    • Interface \Client\ e implementação \GitClient\ com métodos \IsGitRepo, \GetRepoRoot, \IsTracked, \IsStaged, \IsIgnored\ e \GetFileStatus.
    • Funções de conveniência no nível do pacote para acesso direto.
  • Execução & Normalização de Caminhos (\internal/git/exec.go):
    • Abstração \Runner\ e implementação \OSCommandRunner\ com desativação de prompts interativos (\GIT_TERMINAL_PROMPT=0).
    • Função
      ormalizePath\ para conversão consistente de caminhos multiplataforma (Windows e Unix).
    • Suporte a \check-ignore --no-index\ para validar regras de .gitignore\ tanto para arquivos novos quanto rastreados.
  • Testes Automatizados (\internal/git/git_test.go):
    • Testes de integração em repositórios temporários (\ .TempDir()).
    • Cobertura de diretórios fora do Git, arquivos untracked, protegidos por .gitignore, staged e tracked.
    • Testes com simulação de ausência do executável \git\ via mock.

🧪 Como Testar

  1. Execute a suíte de testes do pacote \internal/git:
    \\�ash
    go test -v ./internal/git/...
    \\
  2. Execute todos os testes do projeto:
    \\�ash
    go test -v ./...
    \\

✅ Checklist do Contribuinte (Pré-Envio)

  • Revi as minhas alterações com \git diff\ e \git status.
  • Garanti que nenhum arquivo sensível, segredo (.env), token ou arquivo temporário foi comitado.
  • O código segue os padrões de formatação (\gofmt -s -w .\ e .editorconfig).
  • Os testes automatizados e builds estão passando localmente (\go test ./...\ e \go build ./...).
  • As mensagens de commit seguem o padrão Conventional Commits.

⚠️ Breaking Changes / Observações

  • Nenhuma breaking change.
  • Observações: Base sólida e pronta para integração com o comando \scan.

Adiciona pacote internal/git para inspecionar se um diretório
é repositório Git e consultar status de arquivos em relação
a tracked, staged e regras de .gitignore com fallback seguro.

Closes #2
@joaooncode joaooncode added enhancement New feature or request mvp Features and requirements for MVP v0.1.0 core Core engine, scanning, and detectors labels Aug 30, 2026
@joaooncode
joaooncode merged commit 1580ff2 into main Aug 30, 2026
@joaooncode
joaooncode deleted the feat/git-status-analyzer branch August 30, 2026 01:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Core engine, scanning, and detectors enhancement New feature or request mvp Features and requirements for MVP v0.1.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(git): Implementar analisador de estado do repositório Git

1 participant