2014年10月7日

Coda 2 から FileMerge が動かない場合の対応


むかしむかし、Coda のガイド本を書いたおじさんがいたそうな・・・。

というわけで、あれ以来 Web 系の開発にはずっと Coda を愛用しております。
.ssh/config のプロキシ設定を読んでくれないとか、公開鍵のパスフレーズを消さないと繋がらないとか、いろいろと細かい不満はあるのだけど、他にこれ以上使いやすいツールが無い、というか本当に Coda はよくできてるので手放せないのです。

が、最近・・・いつからだかわからないのだけど、なぜか Coda からSVNリポジトリとローカル間の diff がとれない、という問題が発生しておりました。Coda は Xcode に含まれる FileMerge を起動して差分の表示をしてくれるのだけど、FileMerge 自体が起動しないのです。

やっと少し時間がとれたので、ちょっとつっこんで調べてみました。
先に原因を言ってしまうと、 Coda そのものには原因はありません。なので、Coda の設定をあちこち見ても解決しません。

FileMerge の呼び出しには、/usr/bin/opendiff コマンドが呼び出されています。ターミナルから、このコマンドを実行してみると・・・

[ccln_bash width=”600″]
$ sudo /usr/bin/opendiff
You have not agreed to the Xcode license agreements. You must agree to both license agreements below in order to use Xcode.

Hit the Enter key to view the license agreements at ‘/Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf’
[/ccln_bash]

ぐがーん。ライセンスアグリーメント!
つまり、ライセンスを承諾しないと Xcode は動かないぜ!もちろん opendiff もな!っていうだけだったのです。
ちなみに、FileMergeは普通に単体で起動しちゃうので、「/usr/bin/opendiff」の存在を知らないと「なぜ??」状態から抜けだせません。

これは普通気が付かないよなー。
開発のコマンド群だけを使いたいがために Xcode をインストールして、Xcode 本体を使っていないって人だっているんだからさー。

というわけで、ライセンスの条文を一通り SPACE キーを押して読んで、最後に「agree」と入力。

[ccln_bash width=”600″]
By typing ‘agree’ you are agreeing to the terms of the software license agreements. Type ‘print’ to print them or anything else to cancel, [agree, print, cancel] agree
[/ccln_bash]

これで無事、FileMerge で Coda から比較ができるようになりました。


[社長ブログ]