Umi Uyuraのブログ

プログラミング関連の作業ログ

FileMergeをLaunchpadから実行できるようにした

※2014/09/10追記

ブコメで教えて頂きましたが、こんなマドロッコシイことしなくても、シンボリックリンク張れば瞬殺でした!

id:toshimitsu_sasaki さん、ありがとうございます!

$ ln -s /Applications/Xcode.app/Contents/Applications/FileMerge.app /Applications/

まあ、なんか使い道あるんじゃないってことで...

※2015/05/26追記

Meldという差分比較ツールも使っていて、こんなツールも作ってみたので、良かったら使ってみてください。

umi-uyura.hatenablog.com


FileMergeはXcodeのDeveloper Toolsに含まれている差分比較/マージツールですね。

Windowsの頃はWinMergeに非常にお世話になっていました。
ファイルだけでなくフォルダ同士の差分も視覚的にわかりやすくて使いやすかったです。

4年くらい前からMacを使い始めて、その代替となるツールがなくて困りましたが、結局標準開発ツールに含まれているFileMergeがベターであるということで落ち着いています。
特にフォルダ同士の比較に関しては、FileMergeは直感的にわかりにくいですね。

ところが、少し前のXcodeから、それまではApplicationフォルダから起動できていたFileMergeが、なぜか単独のアプリケーションとして使うことができなくなり、Xcodeのメニューから呼び出さなければならなくなってしまいました。

f:id:umi-uyura:20140702235745p:plain

Xcodeを常時起動しているような場合であれば、それでも良いのかもしれないですが、私は普段プログラミングにはEmacsを使っているので、そうなるとわざわざFileMergeのためにXcodeを起動しなければならず、手間が多くなってしまいます。

opendiffコマンド

Xcode以外にFileMergeを起動する方法として、opendiffコマンドがあるようです。

$ opendiff <ファイル1> <ファイル2>

ですが、この場合は比較する2つのファイルを引数を要求されるため、あらかじめアプリを起動しておいて、Finderからドラッグ&ドロップでファイルやフォルダを放り込むという手軽な使い方ができないのが微妙でした。

FileMergeをTerminalから起動する

探してみると、FileMergeのアプリ自体がなくなったわけではなく、Xcode.appの中に内包される形で残っていました。

よって、Terminalから

$ /Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge

と実行することで、単独でFileMergeを起動させることができました。

FileMergeを起動するシェルスクリプトをアプリ化する

ということは、このコマンドをシェルスクリプトにでもして、Applicationフォルダに置いておけばLaunchpadから起動できるかな?と考えていたところ、こんな記事を見つけてしまいました。

MacOSXでシェルスクリプトを.app形式のアプリケーションにするmkapp.app - maruko2 Note.

そういえば、Macのアプリケーションというのは、WindowsのEXE形式などのようなバイナリファイルではなくて、.appという拡張子?がついたフォルダ内に、必要なリソースがパッケージングされた形なんですよね。

ということで、さっそくFileMergeを起動するシェルスクリプトを実行するアプリを生成するスクリプトを作ってみました。

FileMerge.appを単独で起動するfmerge.app生成スクリプト

適当なフォルダにmakefmerge.shscript.shを作って、makefmerge.shを実行すると、fmerge.appが生成されます。

これをApplicationフォルダに置いておけば、

f:id:umi-uyura:20140702235801p:plain

この通り、Launchcpadから直接FileMergeを起動できるようになりました。

これで差分比較作業が捗りそうです。

参考