もちもちあずき

広告
ギャラリー

RevisionsからFileMargeを呼ぶ

Dropbox」に放り込んであるファイルの差分を見たいことがある。
例:あのビリーバー一覧をごりごり更新していたもののしくじった気がしたときなど。

そこで更新履歴を見せてくれる「Revisions」の出番なのだが、「diffは外部アプリケーションを呼んでね」という少し残念な、いや既存であるのだから自分で抱えなくていいよねという合理的な仕様だったりする。

でだ。RevisionsのFAQに列挙されている以外のものを呼び出すためのAppleScriptのサンプルがあるのだが、これがまたOS X Yosemite.3だと5行目のset readのところで-1700エラーを吐いてこける訳ね。

FAQ」によると次のパスをを使えとなっている。
– “/Users/username/Library/Containers/com.bayesbits.Revisions/Data/diffs/pathA”
– “/Users/username/Library/Containers/com.bayesbits.Revisions/Data/diffs/pathB”

しかし、ver.1.3(ver.2.0でも同様)で開かせ(ファイルタイプに応じた既定のアプリケーションで開かれる)、開いたウインドウのプロキシーアイコンをcmd+clickしてフォルダをたどると

` /private/var/folders/pm/いろいろ掘り返し

を使っていて、hoge-earlier.piyoとhoge-later.piyoがおいてある。そりゃあんた-1700エラー以前にFAQと実態が違うではないかと。

なお、いちおう、たどたどしい英文で「FAQが実態と異なるから更新してスクリプトを通るようにしてくれ」とメールはしておいたが、時差もあるし、先方の都合もあるだろうからいつ解決されるかは分からない。

それまでの対応として、とても原始的な次の手法で回避することにした。
1. Revisionsでdiffアイコンをクリックする。
2. ファイルタイプに応じた既定のアプリケーションで開かれるので、プロキシーアイコンからファイルが格納されているフォルダをたどって開く。
3. Terminal.appを開き、”cd “とタイプしておいて、2項のフォルダのプロキシーアイコンをTerminal.appにdrag & dropする。
3. Terminal.appにタイプしておいた”cd “の後ろに2項で開いているパスが追記されているはずなので、リターンキーを気持ちよく叩くと、比較対象のファイルが置いてあるフォルダにカレントディレクトリが移動しているはず。フォルダ名に空白が挟まっている場合には、追記されたパスの前後をダブルクォートではさんでやると良いだろう。
4. 3項で比較対象のファイルが置いてあるフォルダに移動できているはずなので、Terminal.appでopendiff *earlier.piyo *later.poyoと叩くとあら不思議、FileMergeに左ペインにhoge-earlier.piyoを、右ペインにhoge-later.piyoが開かれているはずだ。

この手順はきっとまともにAppleScriptを書ける方であれば自動化可能だろうと類推するが、パスが可変であるために自動化はできないかも知れない。なにはともれあれ、Revisionsの作者がまともなパスに吐き出すように変更してくれないと何ともならないか。

「こうすれば良くなるのでは?」というアイデアを実装したものをお持ちの方はご助力をいただけるとありがたい。

0051時追記 賢者がいた。「踊るサボテン工房|Mac|CotEditor のスクリプト」のCompare filesのスクリプトをCtoEditorに入れておいて、hoge-earlier.piyoのウインドウを背面に、hoge-later.piyoを全面にしてこのスクリプトを叩くとFileMargeに飛ばしてくれる。CotEditor+同スクリプトならば対応策の1項と前記の手順でFileMargeが使えます。

2015.04.20 2234時追記
つたない英語で作者さんと11通のメールのやりとりをしてようやくdiffの対象にするファイルの書き出しパスがおかしくないか?という意図が通じた ^^;

2015.04.22 2206時追記
作者さんから原因判明と対策の返事が来た。原因としては英語以外のフォルダ名とファイル名に対応していなかったとのこと。対策としては
~/Library/Containers/com.bayesbits.Revisions/Data
に”diffs”フォルダを掘ってくれとのこと。試してみたところ問題なくFileMarge.appが起動し、diffも見ることができた。

RevisionsからFileMargeを呼ぶ