macでwinmergeみたいなこと

djangoのソースいじったり、linux/mac/windowsのスクリプトを維持したり、この文章もgoogle cloudで動かしてるgitlabのコンテナに入れてる。

更新差分を確認するのは、ずっとwinmerge使ってるんやけど、macでも同じようなことできるんとちゃうか。

探してみたらあった。

DiffMergeってのがあるそうな

総本山はここ。

https://www.sourcegear.com/diffmerge

本来はプログラムをマージしてくのが目的なんやけど、自分は直近1年ぐらいの変遷がわかったらええ。

ファイルのありなしと、書いてる内容の差分が見えたらいったんOKやねんけどね。

macで書いてから、gitlabに登録してgit cloneしたあとに、内容が維持できてるかが見れるのが自分としての目的。

入れてみましょ。

diffmerge

ダウンロードするdmgファイルの名前にintel stableってあるけど、macやからm4でもうまいことやってくれるはず。

Extrasって書いてあるフォルダには実行には関係なさそうなファイルが入ってるから放置。

Applicationsのフォルダのエイリアスあるから、ドラッグして起動させてみたら動くやん。

brewでもインストールできるで。こっちのほうがバージョンアップ維持しやすいかも。

nari@gvis-mac ~ % brew install --cask diffmerge
==> Downloading https://formulae.brew.sh/api/cask.jws.json
==> Caveats
diffmerge is built for Intel macOS and so requires Rosetta 2 to be installed.
You can install Rosetta 2 with:
  softwareupdate --install-rosetta --agree-to-license
Note that it is very difficult to remove Rosetta 2 once it is installed.

==> Downloading https://download.sourcegear.com/DiffMerge/4.2.1/DiffMerge.4.2.1.1013.intel.stable.dm
############################################################################################# 100.0%
==> Installing Cask diffmerge
==> Moving App 'DiffMerge.app' to '/Applications/DiffMerge.app'
==> Linking Binary 'diffmerge.sh' to '/opt/homebrew/bin/diffmerge'
==> Linking Manpage 'diffmerge.1' to '/opt/homebrew/share/man/man1/diffmerge.1'
🍺  diffmerge was successfully installed!
nari@gvis-mac ~ % 

エンコードとか初期設定

インストーラがあるアプリケーションやったら言語で日本語選べることもあるけど、macのソフトウェアは日本語でストレートに動きだすことは少ない。

diffmergeもそうやし、文字コードの取り扱いとか、その他の見た目なんかを設定してく。

最初はフォントとそのサイズ。Myricaで14ポイント指定。

diffmerge

次にエンコード指定。Rulesetってところいじって、UTF8/shift-jis/英語圏のデフォルトの3つを指定しとく。プログラムだけを維持してるんやないから、カスタムルールセットはいったん無効化。

diffmerge

次は色。ダークモードのボタンはなかったけど、背景を黒にして、ハイライトしたい箇所は明るい色にしとく。

diffmerge

除外設定ってのもあって、mac固有のDS_storeとか入ってくれてるから、いったんデフォルトのまま。

diffmerge

残念やけど、比較するファイルサイズの上限のことなんやろけど、99MBまでしか指定できんみたい。上向きの矢印ボタン押しても99までしか上がらん。

diffmerge

大きめのpdfとかtar.gzとかは比較できんなぁ。

フォルダ単位で比較やってみる

macからファイルサーバにつないで、右下のフォルダを選んだものを起動したdiffmergeにドラッグすると比較対象を表示してくれる。

diffmerge

比較したら、差分のある箇所だけが表示される。日本語ファイル名もテキスト内容もちゃんと比較が処理できてるやん。

diffmerge

けど、追加したjpgファイルとかもあるのになんで表示してくれへんねん。

見え方をwinmergeに寄せてく

ファイルサーバにある、差分の箇所をwinmergeと比べて目視確認してみた。

diffmerge

diffmergeの表示結果とwinmergeと比べてみたら、対象と内容はあってる。

diffmerge

winmergeはどのフォルダの、どこが違うかを表示してくれるんやけど、diffmergeで同じようなことするときは、ツールバーにある2つのアイコンをクリックしとくと表示してくれる。

diffmerge

追加したファイルも見えるようになるのと、左右の比較で片方にしかないものは青、差異があるものは赤でファイル名表示してくれる。

diffmerge

階層ごとにインデントしてくれたらええなぁと思ったけど、javaとか扱ったらめっちゃ深い階層になりがちやから、一般的にはこのままのほうがええんかもしれん。

django(python)のプログラムを比較

djangoはpythonのweb版みたいなもんで、個人的に維持してる。dockerとkubernetesの中で動かしてて、最近利用ポート番号変えたから比較してみる。

比較対象の除外対象に、django特有のpycを足した。

diffmerge

rancher desktop分のsettings.py中にある差分ちゃんと拾えてるやん。

diffmerge

99MB以上の大きなファイルを含んでるフォルダの比較はできんけど、普通のプログラムソースとか、自分のメモやったらdiffmergeで維持できそうやな。

大きなファイル含む場合は、引き続きwinmerge使うことにしましょ。