2011-12-28 10 views
4

可能性の重複:SVNはデルタ・ストレージ・システムである」 - それは1コミットと、次の違いを格納します。
How much space do I need for Git vs SVN?GitはSVNよりも多くのスペースを必要としますか?

私はGitリポジトリとSVNとの重要な違いがあることである知っているようにGitはこれをしませんが、コミットするたびにツリー構造内にプロジェクト内のすべてのファイルのスナップショットが保存されます。

これはGitがSVNよりも多くのスペースを必要とするのはデルタの代わりにすべてのスナップショットを保存するからですか?

答えて

0

実際には.gitディレクトリは.svnより小さく、gitはデータをよく圧縮し、その設計上、いくつかの役に立たないスナップショットを保持しないためです。そしてデルタも使用しています!

6

私はあなたがそれを逆に持っていると思います。

SVNでは、チェックアウトする各ブランチは完全コピーとデルタです。したがって、2つのブランチは、2つの完全なファイルセットとすべてのSVN diff情報を意味します。

Gitは、ファイルの1つのコピーと差分情報を含むすべてのスナップショットを保持します。したがって、複数のブランチの場合、Gitは常に小さくなります。

4

"Packfiles"Pro Gitから:

Gitは 緩いオブジェクトフォーマットと呼ばれ、ディスク上のオブジェクトを保存するには、最初の形式。しかし時々Gitは のいくつかをpackfileという1つのバイナリファイルにパックして、 のスペースを節約し、より効率的になるようにします。 git gcコマンドを手動で実行した場合、または リモートサーバーにプッシュした場合、Gitはこれを実行します。 オブジェクトの数が多すぎる場合はこれを行います。

Gitはファイルの各バージョンを別々に保存するとは限りませんし、違いも使います。さらに、Gitは、少なくともプレーンテキストのソースコードファイルに対してはかなり効果的なzlibですべてのファイルを圧縮します。

GitがSVNよりも多かれ少なかれスペースを使用するかどうかを確かめるのは簡単ではありません。その理由の1つは、SVNが最後のリビジョンだけをローカルに保存し、gitを使用すると、マシンにリポジトリの完全なコピーがあることです。したがって、SVNのあるリビジョンで使用される領域とGitの完全リポジトリで使用される領域を比較することはできません。

スペースでサーバー上のSVNリポジトリで使用されるスペースを比較するGitリポジトリは、少なくとも特定のリビジョン履歴とそこに保存するファイルのタイプに大きく依存します。

関連する問題