LoginSignup
1
0

Difftasticは求められていたdiffなのか?

Last updated at Posted at 2023-12-30

この記事は、pixivFANBOXに平日毎日書いている記事のうち、未公開のものを1つ先出しで公開したものです。
https://kinneko.fanbox.cc/

 Difftasticというツールがあるというのを知った。Rustで書かれたdiffコマンドの代替ツール。

  Difftastic, a structural diff
  https://difftastic.wilfred.me.uk/

image.png

 普通のdiffは行ごとの違いを分析して提示するので、うまく差分が取れないことや、理解できない断片だけを提示してくることもある。また、書式フォーマットが変わるのにも弱い。たとえば、タブを変更したらみんな違うと認識してしまう。さらに、ブロックでの大きな変更に弱い傾向があると思う。あくまで、近い行のまわりで何かがあるような場合に便利なだけ。でも、ずっと使われてきている。

 Difftasticのドキュメントの例では、普通のdiffはこんな感じ。

image.png

 Difftasticでは、構文に基づいたファイル比較をしてくれるらしい。

image.png

 多くのプログラム言語や、データフォーマットに対応している。

image.png

 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

image.png

 インストール方法はこちら。macOSではbrewで入るみたい。

  Installation - Difftastic Manual
  https://difftastic.wilfred.me.uk/installation.html

 これで入れてみたけど、依存関係のあるライブラリなど大量にビルドするので時間がかかる。

 Homebrewで自前ビルドしなくても、ビルド済みのあるじゃん...

  Releases · Wilfred/difftastic
  https://github.com/Wilfred/difftastic/releases

image.png

 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で起動する。普通に動くようだ。

image.png

 実行できるようになった。ライブラリ類での不整合があるわけではないみたい。
 なので、brewから入れる必要はまったくないということか... 依存関係でゴミをいっぱい入れてしまったなぁ...
 待てよ? brewで入れたライブラリがあるから動いているのかもしれないな... もう確認できないけどw

image.png

 あとは、/usr/local/binにコピーして使えばよさげ。

% sudo cp difft /usr/local/bin/

 パス的には、brewで入れたもののほうが早いらしいw

% which difft
/opt/homebrew/bin/difft

 なんか入れただけで飽きたw

 タイトルの疑問は未解決だけど、たぶん、きっと誰かが、Qiitaで使った感想とかを書いてくれるに違いない。

 とはいえ、既存のツールのpatchとかquiltにはdiffは相変わらず必要なので、差分閲覧専用のツールといった感じ。すぐには完全な代替えにはならないだろう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0