difftastic - 構文を理解する構造的差分 🟥🟩

(a structural diff that understands syntax 🟥🟩)

Created at: 2018-12-18 19:19:45
Language: Rust
License: MIT

それは違います!
マニュアル crates.io codecov.io

Difftastic は、構文に基づいてファイルを比較する構造差分ツールです。

インストール手順について は 、マニュアルの「インストール」を参照してください。

基本的な例

difftastic と JS のスクリーンショット

この JavaScript の例では、次のことがわかります。

(1) Difftastic はネスティングを理解します。

{
一致するand を 強調表示しますが、先頭の空白にもかかわらず変更されていない
}
ことを理解しています。
foo()

(2) Difftastic は、どの行を揃えるべきかを理解します。変更にもかかわらず、

bar()
左側と右側が揃っ ています。
bar(1)

(3) Difftastic は、行の折り返しが無意味であることを理解しています。

"eric"
新しい行になりましたが、変更されていません。

1分間のデモ

アシキャスト

この 1 分間のスクリーンキャストでは、スタンドアロン ファイルと git の両方を使用したさまざまな使用法を示しています。

言語

Difftastic は 20 以上のプログラミング言語をサポートしています。完全なリストについては、マニュアルを参照してください。

ファイルの拡張子が認識できない場合、difftastic は単語を強調表示したテキスト diff を使用します。

既知の問題点

パフォーマンス。Difftastic は、多数の変更があるファイルでは比較的不十分にスケーリングされ、多くのメモリを使用する可能性があります。

画面。Difftastic には、通常はうまく機能するサイド バイ サイド ディスプレイがありますが、混乱する可能性があります。

堅牢性。Difftastic は定期的にクラッシュを修正するリリースを提供しています。

非目標

パッチ適用。Difftastic 出力は人間が使用することを目的としており、後で適用できるパッチを生成しません。

diff
パッチが必要な場合に使用します。

(パッチ ファイルも行指向であり、これは difftastic には制限が多すぎます。Difftastic は同じ行で追加と削除を検出する場合があり、古いファイルと新しいファイルの行番号の関係を追跡します。)

合併。AST のマージは難しい問題であり、difftastic では対処できません。

よくある質問

これが基本ではない
--word-diff --ignore-all-space
でしょうか。

単語差分ではこれができません

Difftastic はコードを解析します。文字列リテラルや Python などの言語の内部など、空白が重要な場合を理解します。

x-1
JS では 3 つのトークンですが、Lisp では 1 つのトークンであることがわかります。

git で difftastic を使用できますか?

あなたはできる!difftastic マニュアルには、git の使用法が含まれていますMercurialでも使用できます 。

magit ユーザーの場合は、magit で difftastic を使用する 1 つの方法を示すこのブログ投稿を確認してください。

difftastic はお気に入りのツールと統合できますか?

おそらくそうではありません。Difftastic は若いです。お気に入りのツールのプラグインを作成することを検討してください。README にリンクします。

翻訳

ライセンス

Difftastic は MIT ライセンスに基づくオープン ソースです。詳細については、LICENSE を参照してください。

このリポジトリには、

vendor/
ディレクトリ内の他の作成者によるツリー シッター パーサーも含まれています。これらは、MIT ライセンスと Apache ライセンスを組み合わせたものです。詳細については、を参照
vendor/*/LICENSE
してください。

のファイル

sample_files/
も、ヘッダーに特に明記されていない限り、MIT ライセンスの下にあります。