TL;DR
行単位ではなく、構文を解析してファイルを比較する CLI の diff ツール。人間が読みやすい差分を出すことを目指している。
仕組み
difftastic は、パーサのフレームワークである tree-sitter でコードを構文解析する。そのため、周りの行が変わっても、中の式が変わっていないことを見分けられる。フォーマットだけの変更は無視し、両方のファイルの実際の行番号を表示する。
例
git diff でも使える。環境変数 GIT_EXTERNAL_DIFF に difftastic のコマンド difft を指定すると、Git が外部の diff ツールとして呼び出す。
export GIT_EXTERNAL_DIFF=/opt/homebrew/bin/difft公式マニュアルでは、diff.external の設定を使う方法も紹介されている。一度だけ使うならコマンドラインで指定し、常に使うなら ~/.gitconfig に書く。
git -c diff.external=difft diff[diff]
external = difftこの設定をすると git diff は difftastic を使う。git show と git log -p では --ext-diff を付ける必要がある。
注意点
公式マニュアルによると、Git v2.43.1 以前では、外部の diff ツールを使っていてファイルのパーミッションが変わっていると、Git がクラッシュすることがある。