Repolode
ivankovic

ivankovic/omnidiff

Rust製のコンテンツに応じたdiffツール。tree-sitterでコードを構造的に比較するほか、画像、フォント、アーカイブ、PDFも比較します。

スター
1,168
フォーク
28
未解決の Issue
9
最終コミット
6 時間前

これは何?

OmniDiffは、ファイルの種類に応じて比較方法を選ぶコマンドライン/ターミナル向けdiffツールです。25言語のソースコードはtree-sitterの文法で解析し、行全体を削除・追加として示すのではなく、名前が変わった式など、実際に変更された部分だけを強調表示します。拡張子が不明なファイルはプレーンテキストとして比較します。

テキスト以外のファイルは、名前ではなく内容をもとに処理します。画像はピクセル単位、アニメーションはフレーム単位で比較します。フォントはグリフ単位、アーカイブはファイル単位、PDFはページ単位で比較し、それぞれの変更が読者にどの程度見えるかをラベルで示します。それ以外のバイナリファイルは、差異があることを1行で通知します。

OmniDiffは、2ペインの対話型ビューアとして、スクリプトやCI向けのプレーンテキスト/JSON出力として、またgit difftool、GIT_EXTERNAL_DIFF経由のgit diff、Jujutsu (jj)のバックエンドとして利用できます。Cargo、Homebrew、apt、Nixからインストールできるほか、Linux、macOS、Windows向けのビルド済みバイナリも提供されています。

主な機能

  • 01tree-sitterの文法を使い、25のプログラミング言語とマークアップ言語を構造的に比較します。
  • 02アニメーションのフレームを含め、画像をピクセル単位で比較します。
  • 03フォントをグリフ単位、PDFをページ単位で比較します。
  • 04ネストされたアーカイブを含め、アーカイブをファイル単位で比較します。
  • 05対話型TUI、ヘッドレスのテキスト出力、JSON出力に対応します。
  • 06git difftool、git diff、Jujutsu (jj)と連携します。

ユースケース

  • 一部の式だけが変更されたコードのリファクタリングをレビューする。
  • gitで管理しているフォント、アイコンセット、PDF図面の変更点を確認する。
  • 機械可読なdiff出力が必要なスクリプトやCIパイプラインで利用する。
  • デフォルトの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

    2つのファイルをインタラクティブビューアで開く

    omnidiff BEFORE AFTER

使う前に知っておきたいこと

  • READMEのバッジにはコピーレフトライセンスであるAGPL-3.0-onlyと記載されていますが、リポジトリのメタデータではライセンスが検出されていません。
  • ソースからのビルドにはCコンパイラとRust 1.92以降が必要です。また、初回のcargo installには数分かかります。

収録されている特集

トピック

よくある質問

omnidiff とは?
Rust製のコンテンツに応じたdiffツール。tree-sitterでコードを構造的に比較するほか、画像、フォント、アーカイブ、PDFも比較します。 OmniDiffは、ファイルの種類に応じて比較方法を選ぶコマンドライン/ターミナル向けdiffツールです。25言語のソースコードはtree-sitterの文法で解析し、行全体を削除・追加として示すのではなく、名前が変わった式など、実際に変更された部分だけを強調表示します。拡張子が不明なファイルはプレーンテキストとして比較します。
omnidiff は無料で使えますか?ライセンスは?
omnidiff は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
omnidiff は今もメンテナンスされていますか?
活発にメンテナンス中。omnidiff の最終コミットは 2026年11月6日 です。
omnidiff は何に使えますか?
一部の式だけが変更されたコードのリファクタリングをレビューする。 gitで管理しているフォント、アイコンセット、PDF図面の変更点を確認する。 機械可読なdiff出力が必要なスクリプトやCIパイプラインで利用する。 デフォルトのgit difftoolを、構文を認識するビューアに置き換える。
omnidiff のインストール方法は?
Homebrewでインストール(macOSおよびLinux): brew install ivankovic/omnidiff/omnidiff または、Cargoでソースからビルド(CコンパイラとRust 1.92以降が必要): cargo install --locked omnidiff 2つのファイルをインタラクティブビューアで開く: omnidiff BEFORE AFTER
omnidiff はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ivankovic/omnidiff

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト