Repolode
ivankovic

ivankovic/omnidiff

Учитывающий содержимое diff-инструмент на Rust: сравнивает код по структуре с помощью tree-sitter, а также изображения, шрифты, архивы и PDF.

Звёзды
1,168
Форки
28
Открытые issues
9
Последний коммит
19 часов назад

Что это?

OmniDiff — diff-инструмент для командной строки и терминала, который выбирает способ сравнения файлов в зависимости от их типа. Для исходного кода на 25 языках он разбирает каждый файл с помощью грамматики tree-sitter и подсвечивает только действительно изменившиеся части — например, переименованное выражение, — вместо того чтобы помечать целые строки как удалённые и добавленные. Файлы с неизвестными расширениями сравниваются как обычный текст.

Нетривиальные файлы сравниваются по содержимому, а не по именам. Изображения сравниваются попиксельно, анимации — покадрово. Шрифты сравниваются по глифам, архивы — по файлам, PDF — по страницам; каждое изменение помечается с учётом того, насколько оно заметно читателю. Для любых других бинарных файлов выводится однострочное уведомление об отличиях.

OmniDiff работает как интерактивный просмотрщик с двумя панелями, выводит обычный текст или JSON для скриптов и CI, а также может служить бэкендом для git difftool, git diff через GIT_EXTERNAL_DIFF и Jujutsu (jj). Установить его можно через Cargo, Homebrew, apt, Nix или готовые бинарные сборки для Linux, macOS и Windows.

Ключевые возможности

  • 01Структурное сравнение кода на 25 языках программирования и разметки с помощью грамматик tree-sitter.
  • 02Попиксельное сравнение изображений, в том числе кадров анимации.
  • 03Сравнение шрифтов по глифам и PDF — постранично.
  • 04Сравнение архивов по файлам, включая вложенные архивы.
  • 05Интерактивный TUI, вывод текста без интерактивного интерфейса и вывод JSON.
  • 06Интеграция с git difftool, git diff и Jujutsu (jj).

Сценарии использования

  • Проверка рефакторингов, при которых изменилось всего несколько выражений.
  • Проверка изменений в шрифте, наборе иконок или PDF-схеме, хранящихся в git.
  • Использование в скриптах или CI-пайплайнах, которым нужен машиночитаемый вывод diff.
  • Замена стандартного git difftool на просмотрщик, учитывающий синтаксис.

Быстрый старт

  1. 1

    Установите с помощью Homebrew (macOS и Linux)

    brew install ivankovic/omnidiff/omnidiff
  2. 2

    Или соберите из исходного кода с помощью Cargo (нужны компилятор C и Rust 1.92 или новее)

    cargo install --locked omnidiff
  3. 3

    Откройте два файла в интерактивном просмотрщике

    omnidiff BEFORE AFTER

Что важно знать

  • На значке в README указана лицензия AGPL-3.0-only — лицензия с авторским левом, хотя в метаданных репозитория обнаруженная лицензия не указана.
  • Для сборки из исходного кода нужны компилятор C и Rust 1.92 или новее; первая команда cargo install выполняется несколько минут.

В подборках

Темы

Частые вопросы

Что такое omnidiff?
Учитывающий содержимое diff-инструмент на Rust: сравнивает код по структуре с помощью tree-sitter, а также изображения, шрифты, архивы и PDF. OmniDiff — diff-инструмент для командной строки и терминала, который выбирает способ сравнения файлов в зависимости от их типа. Для исходного кода на 25 языках он разбирает каждый файл с помощью грамматики tree-sitter и подсвечивает только действительно изменившиеся части — например, переименованное выражение, — вместо того чтобы помечать целые строки как удалённые и добавленные. Файлы с неизвестными расширениями сравниваются как обычный текст.
omnidiff можно использовать бесплатно? Какая у него лицензия?
omnidiff распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
omnidiff всё ещё поддерживается?
Активно поддерживается. Последний коммит в omnidiff — 6 нояб. 2026 г..
Для чего можно использовать omnidiff?
Проверка рефакторингов, при которых изменилось всего несколько выражений. Проверка изменений в шрифте, наборе иконок или PDF-схеме, хранящихся в git. Использование в скриптах или CI-пайплайнах, которым нужен машиночитаемый вывод diff. Замена стандартного git difftool на просмотрщик, учитывающий синтаксис.
Как установить omnidiff?
Установите с помощью Homebrew (macOS и Linux): brew install ivankovic/omnidiff/omnidiff Или соберите из исходного кода с помощью Cargo (нужны компилятор C и Rust 1.92 или новее): cargo install --locked omnidiff Откройте два файла в интерактивном просмотрщике: omnidiff BEFORE AFTER
Где скачать omnidiff?
Исходный код и инструкции по установке — на GitHub: https://github.com/ivankovic/omnidiff

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

CLI-инструмент, который запускает локальный веб-интерфейс в стиле GitHub для просмотра и обсуждения git diff с комментариями, которые можно копировать как промпты для ИИ.

3,3 тыс.+16 за неделю216TypeScriptMITАктивно поддерживаетсяОбновлён 2 месяца назад