Repolode
ivankovic

ivankovic/omnidiff

Herramienta de diff en Rust que compara código según su estructura con tree-sitter y también imágenes, fuentes, archivos comprimidos y PDF.

Estrellas
1,168
Forks
28
Issues abiertos
9
Último commit
hace 16 horas

¿Qué es?

OmniDiff es una herramienta de diff para la línea de comandos y la terminal que elige cómo comparar los archivos según su tipo. Para el código fuente en 25 lenguajes, analiza cada archivo con una gramática de tree-sitter y resalta solo las partes que realmente cambiaron, como una expresión renombrada, en lugar de marcar líneas enteras como eliminadas e insertadas. Los archivos con extensiones desconocidas se comparan como texto sin formato.

Los archivos que no son de texto se procesan según su contenido, no según sus nombres. Las imágenes se comparan píxel por píxel y las animaciones, fotograma por fotograma. Las fuentes se comparan glifo por glifo, los archivos comprimidos, archivo por archivo, y los PDF, página por página; cada cambio se etiqueta según lo visible que sea para el lector. Para cualquier otro archivo binario, se muestra un aviso de una línea indicando que los archivos son distintos.

OmniDiff funciona como visor interactivo de dos paneles, genera texto sin formato o JSON para scripts y CI, y puede usarse como backend de git difftool, git diff mediante GIT_EXTERNAL_DIFF y Jujutsu (jj). Se puede instalar con Cargo, Homebrew, apt y Nix, o mediante binarios precompilados para Linux, macOS y Windows.

Funciones clave

  • 01Diffs estructurales para 25 lenguajes de programación y marcado mediante gramáticas de tree-sitter.
  • 02Comparación de imágenes a nivel de píxel, incluidos los fotogramas animados.
  • 03Comparación de fuentes glifo por glifo y de PDF página por página.
  • 04Comparación de archivos comprimidos archivo por archivo, incluidos los archivos comprimidos anidados.
  • 05TUI interactiva, salida de texto sin interfaz y salida JSON.
  • 06Se integra con git difftool, git diff y Jujutsu (jj).

Casos de uso

  • Revisar refactorizaciones de código en las que solo cambiaron algunas expresiones.
  • Comprobar qué cambió en una fuente, un conjunto de iconos o un diagrama PDF con seguimiento en git.
  • Usarlo en scripts o pipelines de CI que necesitan una salida de diff legible por máquinas.
  • Reemplazar la herramienta de diff predeterminada de git por un visor que tenga en cuenta la sintaxis.

Inicio rápido

  1. 1

    Instálalo con Homebrew (macOS y Linux)

    brew install ivankovic/omnidiff/omnidiff
  2. 2

    O compílalo desde el código fuente con Cargo (necesita un compilador de C y Rust 1.92 o posterior)

    cargo install --locked omnidiff
  3. 3

    Abre dos archivos en el visor interactivo

    omnidiff BEFORE AFTER

Antes de usarlo

  • La insignia del README indica la licencia AGPL-3.0-only, una licencia copyleft, aunque los metadatos del repositorio no muestran ninguna licencia detectada.
  • Para compilar desde el código fuente se necesita un compilador de C y Rust 1.92 o posterior; la primera ejecución de cargo install tarda unos minutos.

En colecciones

Temas

Preguntas frecuentes

¿Qué es omnidiff?
Herramienta de diff en Rust que compara código según su estructura con tree-sitter y también imágenes, fuentes, archivos comprimidos y PDF. OmniDiff es una herramienta de diff para la línea de comandos y la terminal que elige cómo comparar los archivos según su tipo. Para el código fuente en 25 lenguajes, analiza cada archivo con una gramática de tree-sitter y resalta solo las partes que realmente cambiaron, como una expresión renombrada, en lugar de marcar líneas enteras como eliminadas e insertadas. Los archivos con extensiones desconocidas se comparan como texto sin formato.
¿omnidiff es gratuito? ¿Qué licencia tiene?
omnidiff es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿omnidiff sigue mantenido?
Mantenimiento activo. El último commit de omnidiff fue el 6 nov 2026.
¿Para qué puedo usar omnidiff?
Revisar refactorizaciones de código en las que solo cambiaron algunas expresiones. Comprobar qué cambió en una fuente, un conjunto de iconos o un diagrama PDF con seguimiento en git. Usarlo en scripts o pipelines de CI que necesitan una salida de diff legible por máquinas. Reemplazar la herramienta de diff predeterminada de git por un visor que tenga en cuenta la sintaxis.
¿Cómo se instala omnidiff?
Instálalo con Homebrew (macOS y Linux): brew install ivankovic/omnidiff/omnidiff O compílalo desde el código fuente con Cargo (necesita un compilador de C y Rust 1.92 o posterior): cargo install --locked omnidiff Abre dos archivos en el visor interactivo: omnidiff BEFORE AFTER
¿Dónde consigo omnidiff?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/ivankovic/omnidiff

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados