2012-06-02T15:31:28+09:00

AppleScript のスクリプトバンドルを git でバージョン管理する(その3)

基本的な、戦略は

という物でした。でも・・・いちいち .applescript の生成なんかしなくてもいいということに気付いちまったぜ、ぐはっ。

git には、バイナリの diff を行う時にフィルターを設定することができるんだ。つまり、.scpt ファイルの diff を行う時に、osadecompile でテキスト形式に変換するということできるんだ。.applescript ファイルの生成なんか必要ないんだぜ。こんな機能は、Subversion にはありませんでした。git すごいぜ。

というわけで、.applescript の生成はやめて、.scpt に対してフィルターを設定する git-scptd を作りました。

git-scptd をダウンロードする(実行には、SmartActivate.osax, TerminalCommander.osax が必要です。)

昔の git-scptd でレポジトリを作ったスクリプトに対しては、"Update Settings" を実行してください。すると、.applescript の生成はやめて、.scpt に対してフィルターを設定するぜ。やっていることは、以下のとおり。

ところで、.scpt ファイルはソースコードに変更を加えて保存しなくても、スクリプトを実行するだけで更新されちゃうぜ。property の変更を保存する為だ。ソースコードの変更を伴わない.scpt ファイルの変更をいちいちコミットすると、レボジトリがふくれあがっちゃうぜ。だから、pre-cmmit フックでは .scpt ファイルの diff をとって、変更がなければ.scpt ファイルをコミットからはずすということをすることにした。さらに、その結果コミットすべきファイルが無くなれば、コミットをキャンセルする。

ダレカノオヤクニタチマスヨウニ。