この記事は、pixivFANBOXに平日毎日書いている記事のうち、未公開のものを1つ先出しで公開したものです。
https://kinneko.fanbox.cc/
Difftasticというツールがあるというのを知った。Rustで書かれたdiffコマンドの代替ツール。
Difftastic, a structural diff
https://difftastic.wilfred.me.uk/
普通のdiffは行ごとの違いを分析して提示するので、うまく差分が取れないことや、理解できない断片だけを提示してくることもある。また、書式フォーマットが変わるのにも弱い。たとえば、タブを変更したらみんな違うと認識してしまう。さらに、ブロックでの大きな変更に弱い傾向があると思う。あくまで、近い行のまわりで何かがあるような場合に便利なだけ。でも、ずっと使われてきている。
Difftasticのドキュメントの例では、普通のdiffはこんな感じ。
Difftasticでは、構文に基づいたファイル比較をしてくれるらしい。
多くのプログラム言語や、データフォーマットに対応している。
GIT_EXTERNAL_DIFFや.gitconfigに設定することで、gitから使うこともできる。
Git - Difftastic Manual
https://difftastic.wilfred.me.uk/git.html
macOSでも動くようなので、入れてみる。
ソースはこちら。
Wilfred/difftastic: a structural diff that understands syntax 🟥🟩
https://github.com/Wilfred/difftastic
インストール方法はこちら。macOSではbrewで入るみたい。
Installation - Difftastic Manual
https://difftastic.wilfred.me.uk/installation.html
これで入れてみたけど、依存関係のあるライブラリなど大量にビルドするので時間がかかる。
Homebrewで自前ビルドしなくても、ビルド済みのあるじゃん...
Releases · Wilfred/difftastic
https://github.com/Wilfred/difftastic/releases
difft-aarch64-apple-darwin.tar.gzをダウンロードして展開してみる。
% ls -alh difft
-rwxr-xr-x@ 1 kinneko staff 67M 11 26 10:20 difft
macOSなので、コマンドといえど、そのまますぐには実行できない。
% ./difft --help
zsh: killed ./difft --help
FinderからCtrクリックで開くを選ぶ。
開くを押すとterminalで起動する。普通に動くようだ。
実行できるようになった。ライブラリ類での不整合があるわけではないみたい。
なので、brewから入れる必要はまったくないということか... 依存関係でゴミをいっぱい入れてしまったなぁ...
待てよ? brewで入れたライブラリがあるから動いているのかもしれないな... もう確認できないけどw
あとは、/usr/local/binにコピーして使えばよさげ。
% sudo cp difft /usr/local/bin/
パス的には、brewで入れたもののほうが早いらしいw
% which difft
/opt/homebrew/bin/difft
なんか入れただけで飽きたw
タイトルの疑問は未解決だけど、たぶん、きっと誰かが、Qiitaで使った感想とかを書いてくれるに違いない。
とはいえ、既存のツールのpatchとかquiltにはdiffは相変わらず必要なので、差分閲覧専用のツールといった感じ。すぐには完全な代替えにはならないだろう。