2012-04-26 4 views
0

GITのSVNに対するパフォーマンステストでは、GITがSVNよりもはるかに高速であることがわかりました。 プロジェクトのサイズが増えて(それ以上のバージョンの)パフォーマンスが良好かどうかを確認するために、私は45KのコミットでPerlプロジェクトをフォークし、サーバーに保存しました。私はちょうど最新バージョンで別のレポを作成しました。 最初に約140秒でレポ・クローンが作成され、約19秒で1つのコミットしかクローンされない2番目のレポが作成されます。これはちょっと心配です。今や歴史では、SVNより優れたパフォーマンス上の利点が失われています。この結論は正しいのでしょうか?バイナリファイルとスケーラビリティを持つgitの動作

また、巨大なreposと数多くのバイナリファイルでGITのパフォーマンスに関する懸念を表明している多くの投稿/ブログを読んでいます。それらの投稿は少なくとも1歳古いので、これはまだGITの懸念事項だと思いますか?

はい、これらの欠点を回避する方法の1つは、シャロークローンを使用することです。 --depthが1のシャロークローンは、1回のコミットだけで、レポからのクローンとほぼ同じ時間がかかります。しかし、浅いクローンのmanページは限界について話しています。 "履歴が特定の数のリビジョンに切り捨てられた浅いクローンを作成します。浅いリポジトリにはいくつかの制限があります(クローンやフェッチはできません)。長い歴史を持つ大規模なプロジェクトの歴史の中で、修正パッチをパッチとして送信したいと考えています」 これは本当に制限事項ですか、ドキュメントは最新の日付ではありませんか?私はテストレポを使ってテストしましたが、中央リポジトリにプッシュできるようです。かなりOKです。

+0

を(すなわち、あなたは常にクローンはありません) '私はここにも巨大なrepos'とGITのパフォーマンスに対する懸念を表現する多くの記事/ブログを読んで、私はそれがLinuxカーネルよりも任意の大きなを取得することはできません賭けます。 – KurzedMetal

+1

Gitリポジトリをどのくらいの頻度でクローンしますか?ほぼ一度の行動を取るのに時間がかかることを心配するのは、直感的ではないようです。 GitとSVNの* branch *を作成するのにかかる時間を比較すると、もっと一般的な動作になります。ちなみに、 'Git'は略語ではありません。 'GIT'ではなく' Git'(固有名詞)として書かれています。 – simont

+0

ちょうど興味深いですが、匹敵するサイズのプロジェクトの初期のsvnチェックアウトは今日どのくらいかかりますか?私は長い間それを使用していないが、私は19秒より140秒に非常に近いことを覚えている。 –

答えて

0

大きなバイナリファイルでの動作は悪くなります。しかし、そのような要件をサポートするGit LFSがあります。

大量のバイナリを誤ってリポジトリにプッシュすると、問題が発生します。後で同じブランチでそれらを削除しても、履歴は変わらず、リポジトリは大量になります。クローニングとgitの内部操作は非常に遅くなります。バイナリファイル(特に大きなバイナリファイル)用に設計されていないためです。

これは、最初に.gitignoreファイルを正しく設定することを防ぐことができます。

また、大規模なリポジトリであっても、プッシュ/プル/ステータスは非常に高速です。

Good Reading before you start

関連する問題