Mercurial で Office (2007) Open XML や OpenDocument を管理する
Microsoft Office 2007 で新しくなった Word、Excel、PowerPoint のファイルフォーマット、Office Open XML ですが、そのまま Mercurial のリポジトリにコミットすると、リポジトリの管理領域 (多分 .hg/store/data の中) のサイズが大きくなってしまいます。
これは、Office Open XML が XML 文書を ZIP 圧縮したファイルであるためです。
Mercurial はコミットするとき、変更されたファイルの差分を抽出して記録しますが、ZIP 圧縮すると差分情報を効率的に抽出できなくなってしまいます。
ところが、そんな問題を解決できそうな ZipdocExtension - Mercurial を発見。
This extension is not distributed with Mercurial
と書いてありますが、 TortoiseHg なら一緒に入ってます。
使い方ですが、ホームディレクトリの .hgrc
か mercurial.ini
ファイルに、或いはリポジトリの
.hg/hgrc
にこんな設定を追加して zipdoc エクステンションを有効にするだけ。
この例では Office Open XML だけでなく、OpenOffice.org の ODF の設定も入れてみました。ODF も XML を ZIP 圧縮しているようなので。XPS / OpenXPS と EPUB も追加してみました。
これで、hg commit
するときはファイルの ZIP 圧縮を内部で自動的に解くようになります。だから、差分情報を効率よく抽出してリポジトリに記録してくれるはずです。
また、hg update
したらファイルを ZIP 圧縮してから作業領域を更新してくれるようになります。
リポジトリをクローンするときは、クローン先でも zipdoc エクステンションが有効になるように設定しておきましょう。
とはいえ、クローンしたリポジトリで zipdoc エクステンションが有効になっていなくても、作業領域のファイルが圧縮されていない (圧縮形式が Store の) ZIP になるだけなので、ファイルを開くことも普通に出来るようです。
とにかく、Windows で TortoiseHg と Microsoft Office を使うなら zipdoc は必須と言っていいエクステンションだと思います。コミットを繰り返すほど効果が大きくなるはずです。
最近のコメント