Repolode
ivankovic

ivankovic/omnidiff

Uma ferramenta de diff em Rust que compara código estruturalmente com tree-sitter e também analisa imagens, fontes, arquivos compactados e PDFs.

Estrelas
1,168
Forks
28
Issues abertas
9
Último commit
há 13 horas

O que é?

OmniDiff é uma ferramenta de diff para linha de comando e terminal que escolhe como comparar os arquivos com base no tipo deles. Para código-fonte em 25 linguagens, ela analisa cada arquivo com uma gramática do tree-sitter e destaca apenas as partes que realmente mudaram — como uma expressão renomeada — em vez de marcar linhas inteiras como excluídas e inseridas. Arquivos com extensões desconhecidas são comparados como texto simples.

Arquivos que não são de texto são comparados pelo conteúdo, não pelo nome. Imagens são comparadas pixel a pixel, e animações, quadro a quadro. Fontes são comparadas glifo a glifo, arquivos compactados, arquivo por arquivo, e PDFs, página por página; cada alteração recebe um rótulo que indica o quanto ela é visível para o leitor. Para qualquer outro arquivo binário, a ferramenta exibe um aviso de uma linha informando que os arquivos são diferentes.

OmniDiff funciona como um visualizador interativo de dois painéis, gera saída em texto simples ou JSON para scripts e CI e pode ser usado como backend para git difftool, git diff via GIT_EXTERNAL_DIFF e Jujutsu (jj). A instalação está disponível pelo Cargo, Homebrew, apt, Nix e por binários pré-compilados para Linux, macOS e Windows.

Recursos principais

  • 01Diffs estruturais para 25 linguagens de programação e marcação usando gramáticas do tree-sitter.
  • 02Comparação de imagens no nível dos pixels, inclusive dos quadros de animações.
  • 03Comparação de fontes glifo a glifo e de PDFs página por página.
  • 04Comparação de arquivos compactados arquivo por arquivo, inclusive os aninhados.
  • 05TUI interativa e saída de texto sem interface ou em JSON.
  • 06Integração com git difftool, git diff e Jujutsu (jj).

Casos de uso

  • Revisar refatorações de código em que apenas algumas expressões mudaram.
  • Verificar o que mudou em uma fonte, conjunto de ícones ou diagrama em PDF versionado no git.
  • Usar em scripts ou pipelines de CI que precisam de saída de diff legível por máquinas.
  • Substituir o git difftool padrão por um visualizador que entende a sintaxe.

Início rápido

  1. 1

    Instale com Homebrew (macOS e Linux)

    brew install ivankovic/omnidiff/omnidiff
  2. 2

    Ou compile a partir do código-fonte com Cargo (requer um compilador C e Rust 1.92 ou posterior)

    cargo install --locked omnidiff
  3. 3

    Abra dois arquivos no visualizador interativo

    omnidiff BEFORE AFTER

Antes de usar

  • O selo do README indica a licença AGPL-3.0-only, uma licença copyleft, embora os metadados do repositório não indiquem nenhuma licença detectada.
  • A compilação a partir do código-fonte requer um compilador C e Rust 1.92 ou posterior, e a primeira execução de cargo install leva alguns minutos.

Em coleções

Tópicos

Perguntas frequentes

O que é omnidiff?
Uma ferramenta de diff em Rust que compara código estruturalmente com tree-sitter e também analisa imagens, fontes, arquivos compactados e PDFs. OmniDiff é uma ferramenta de diff para linha de comando e terminal que escolhe como comparar os arquivos com base no tipo deles. Para código-fonte em 25 linguagens, ela analisa cada arquivo com uma gramática do tree-sitter e destaca apenas as partes que realmente mudaram — como uma expressão renomeada — em vez de marcar linhas inteiras como excluídas e inseridas. Arquivos com extensões desconhecidas são comparados como texto simples.
omnidiff é gratuito? Qual é a licença?
omnidiff é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
omnidiff ainda é mantido?
Manutenção ativa. O último commit de omnidiff foi em 6 de nov. de 2026.
Para que posso usar omnidiff?
Revisar refatorações de código em que apenas algumas expressões mudaram. Verificar o que mudou em uma fonte, conjunto de ícones ou diagrama em PDF versionado no git. Usar em scripts ou pipelines de CI que precisam de saída de diff legível por máquinas. Substituir o git difftool padrão por um visualizador que entende a sintaxe.
Como instalar omnidiff?
Instale com Homebrew (macOS e Linux): brew install ivankovic/omnidiff/omnidiff Ou compile a partir do código-fonte com Cargo (requer um compilador C e Rust 1.92 ou posterior): cargo install --locked omnidiff Abra dois arquivos no visualizador interativo: omnidiff BEFORE AFTER
Onde consigo omnidiff?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/ivankovic/omnidiff

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados