大きなファイルとの小さな違いが私のSubversionリポジトリが大きく成長する原因を突き止めることはできません。説明できないSVNリポジトリのサイズが小さい差分から大きなファイルに変更される
いくつかのテストで使用されたデータベースの内容のzipファイルがあります。新しいバージョンのテストデータをSubversionリポジトリに保存したい。
私はいくつかの実験を行いました。最後のいくつかのバージョンのdata.zipをチェックして、リポジトリのサイズに何が起こっているかを見てきました。圧縮されていないデータは約150MBで、圧縮されて圧縮されているのは約50MBです。リポジトリにチェックインされた新しいバージョンのdata.zipファイルは、リポジトリのサイズを約50MB増加させます。私はそれがずっと少ないと思うデルタの量だけ増やすべきだと思う。
Subversionはxdeltaを使用して圧縮された差分データを格納します。 SVNがうまくいくかどうかを確認する私の試みは、xdeltaをダウンロードして、2つのバージョンの間にあまり違いがないことを確認することでした。実際に
xdelta3.0z.x86-64.exe -e -s v1_path\data.zip v2_path\data.zip v1v2_delta.file
約3MBのv1v2_delta.fileを生成しました。
私は[myrepo] \ DB \回転でSVNリポジトリに見てきたし、
02/08/2011 11:12 57,853,082 4189
02/08/2011 11:40 51,713,289 4190
02/08/2011 11:46 52,286,060 4191
それぞれの新しいリビジョンのために大容量のファイルを見ることができる(4189、4190と4191は、ファイルの名前です。)
私は圧縮せずにdata.zipを圧縮しようとしました。これはSVNが保存しているものと違いはありませんでした。見た目からは、最初のものだけでなく、すべてのリビジョンのdata.zip全体を圧縮したものを保存していると思います。私はFSFSバックエンドでSVN 1.6を実行しています。
コミットバイナリとSVNがデルタをどのように格納するかについては、さまざまな良いスタックオーバーフローの回答があります。 SVN performance after many revisions。しかし、デルタが上記の場合に格納されていない理由、つまり、これらから私は見ることができません。 xdeltaがこのような小さな差分をスタンドアロンで実行できるのであれば、確かにSVNもできますか?そうではありませんか?
編集:私はtar(圧縮されていない)ファイルも試しましたが、SVNは効率的にそれらを保存していません。また私は、SVN が差分ファイルを保存した別のリポジトリに同じデータ形式のZIPファイル(はるかに小さい)があることを発見しました。
この質問の要約版です:SVNは効率的にバイナリファイルを格納することができます。 10 slightly different CAD files are just 1.2 times the size of 1。 SVNは圧縮されたzipファイルで時にはスペース効率が良くなります。しかし、明らかにバイナリファイルのスペース効率が必ずしも良いとは言えません。
「バイナリファイルの保存を避ける」については、 Windowsでは、特にゲームエディタの成果物やオフィスベースのドキュメントのリビジョンを保存する場合は避けられません。 "簡単に再生可能なバイナリファイルを保存するのを避ける"は、より適切です。 svnがバイナリデルタを使うことができるという事実は、他の自由に利用可能なソース管理システムとは別に、他の誰もこれを行うことができないため、設定します。ストレージ。 –