私が興味を持った理由について少し
最初のステートメントから始めましょう
Gitリポジトリは、同等のSubversionリポジトリよりも大幅に小さい
偽 神話。
両方のバージョン管理システムで使用される特定のデルタ圧縮アルゴリズムは多くの詳細が異なりますが、一般的にSubversionとGitは同じ方法でデータを保存します。 これにより、同等のデータを持つSubversionリポジトリとGitリポジトリのサイズがほぼ同じになります。 多くのバイナリファイルを保存する場合を除き、SubversionリポジトリがGitリポジトリよりも大幅に小さくなる可能性がある場合(Subversionのxdeltaデルタ圧縮アルゴリズムはバイナリファイルとテキストファイルの両方で機能するため)。
以下は 、リポジトリのサイズを比較する例です。 結論-違いは重要ではありません。
異なる数のコミットと実際には異なるプライマリソース(これらのリポジトリの同期方法を知っている)に混乱しました。 また、これらの数値を取得するプロセスの説明の詳細レベルにも満足できませんでした。
それでは、実験を始めましょう!
SVNリポジトリを取得する
svnrdump.exe dump https://core.svn.wordpress.org/ > svndump svnadmin create svn svnadmin load svn < svndump
svn. 213 , 79758 88 .
39864 . 1701 160 .
git svn clone -s --prefix "svn/" file:///%path%/svn git_from_svn
, ( 32 ). git — svn ( , ).
, , .
, git_from_svn/.git: 208 7841 509 . git, , . 2 : “loose” object “packfile".
, :
git count-objects -v -H
:
count: 6826
size: 30.21 MiB
in-pack: 249852
packs: 25
size-pack: 145.51 MiB
prune-packable: 73
garbage: 0
size-garbage: 0 bytes
6826 (30.21 ) .
git gc git count-objects -v -H
:
count: 0
size: 0 bytes
in-pack: 256605
packs: 1
size-pack: 104.54 MiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes
".git" 136 (945 , 255 ). .
, svn — bare : 106 M, 19 , 8 .
svn — 213 M (79 758 , 88 )
svn( pack) — 214 M (4 644 , 89 ) ( )
git svn — 208 M (7 841 , 509 )
git svn(pack) — 136 M (945 , 255 )
git bare(pack) — 106 M (19 , 8 )
( ).
, loose , . , . .
Branches are expensive in Subversion
False. A myth.
Branches in Subversion are implemented with Copy-On-Write strategy (referred to as ‘Cheap Copies’ in the svnbook). No matter how large a repository or project is, it takes a constant amount of time and space to make a branch. In fact, Subversion branches are extremely cheap beginning with version 1.0 and you can branch even for small bugfixes in a very busy and large project.
«».
– . , 0,01 . - svn, . , ( svn checkout). , .
–
svn checkout %local_path%/trunk
TotalSeconds: 14.0737539
git clone %local_path%
TotalSeconds: 21.8173709
Git . , git , svn — .
–
svn switch <local_path>/branches/4.7
TotalSeconds: 4.3741352
git checkout -B "4.7" "origin/4.7"
TotalSeconds: 1.2700857
, .
. .
PS: , « », , , , .
!
Update:
VBKesha , svnadmin pack.
svnadmin.exe pack svn
214 MB (4,644 Files, 89 Folders)
, .