分散バージョン管理システムにバイナリファイルを格納した時のリポジトリ増加量
バイナリファイルを格納・修正した時の分散バージョン管理システム(DVCS)のリポジトリ増加量について調べてみました。
使ったDVCSのバージョンは次の通りです。すべてWindows 32bit版です。
- Bazaar … TortoiseBazaar 0.6.6 (Bazaar 2.5.1)
- Git … Git 1.7.11-preview20120710
- Mercurial … TortoiseHG 2.7.1 (Mercurial 2.5.2)
これらのDVCSを使って以下の操作を実行しました。
バイナリファイルとしてExcelのドキュメント(.xls)を使用しています。ファイルの初期容量は7,806,976バイトです。
それぞれの操作をしたときのDVCSの管理ディレクトリの容量は次のようになりました。(単位は Bytes)
操作 | Bazaar (.bzr) | Git (.git) | Mercurial (.hg) |
---|---|---|---|
1 リポジトリの作成 | 36,864 | 61,440 | 8,192 |
2 バイナリファイルの追加 | 7,151,616 | 7,217,152 | 7,143,424 |
3 バイナリファイルを修正 | 14,262,272 | 14,352,384 | 7,262,208 |
4 バイナリファイルを修正 | 21,375,488 | 21,490,176 | 7,378,766 |
5 git gc | 21,375,488 | 7,297,536 | 7,378,766 |
この結果から、バイナリファイルの場合の動作は次のようになっていると推察されます。
- Bazaar … 各コミットの差分を取らずに丸々格納します。
- Git … 通常は各コミットの差分を取らずに丸々格納し、git gcを実行することで差分に変換します。参考: Git - パックファイル
- Mercurial … 各コミットの差分を格納します。