私はGitの下に置くテストリポジトリを持っています。ほとんどのファイルはかなり小さいですが、非常に多数あり、単にaddやstatusなどのGit操作が完了するまでに数十分かかります。これらをリビジョン管理下に置き、合理的なパフォーマンスを得るための私の選択肢は何ですか?サブモジュールを使用するか、DVCSをクリアする必要がありますか?遅いGit操作
遅いGit操作
答えて
add
とstatus
のようなギット操作では、ファイルシステム内のすべてのファイルを(変更を検出するために)必要とします。本当に膨大な数のファイル(たとえば、数十万または数十万のファイル)を持っているか、どちらかというと遅いファイルシステムを持っていますか?stat
いずれにしても、これが極端に遅いシステムで作業する必要がある場合は、インデックスに "変更されていない"ビットを使用して、Gitにファイルstat
を送信しないように指示できます。これをオンにすると、個々のファイルの変更を手に入れるようにgitに手動で指示する必要があります。それらを直接git add
に渡すことによって、Gitは何も変わったことを知ることさえできません。 git config core.ignoreStat true
を設定し、次にgit reset --hard HEAD
のようなものを実行して、これを有効にすることができます。
ビンゴ!私は恐れているので私はそれらを数えませんでしたが、人間が生成した数十万〜数百万のファイルであることを発見しても驚くことはありません。私はそのフラグを設定しようとしたが、それはいくつかの操作で少し助けても、まだ遅すぎる。たぶん私は代わりに大量の小さなリポジトリを作成する必要があります。 – dromodel
「非常に大きい」数字は何ですか?通常はgitが厄介なものを見つける小さなファイルの量ではなく、大きなバイナリファイルです。しかし、その量が十分に大きければ、サブモジュールや他の方法でいくつかのリポジトリに分割したいと思っています。 1つのリポジトリに存在する必要がある場合は、たとえばSubversionがよりパフォーマンスに優れていることがわかります。
EDIT:okだから、ここではボトルネックのように思えるNFSマウントを使用するというコメントを追加しました。 this threadの解決方法をご確認ください。特にここではcore.preloadindexが関心の対象です。 the documentationから
:ファイルシステム上の
core.preloadindex
のgit diffのよう
を操作に対する並列インデックス・プリロードを有効にします。これは、Gitの差分とgitのステータスのような操作をスピードアップすることができ、特に NFSのように弱いキャッシュセマンティクスを持っているため、比較的高いIOレイテンシを持っています。これをtrueに設定すると、gitは のファイルシステムデータとのインデックス比較を並列に実行し、 のIOが重複します。
EDIT2:コメントに6百万のファイルが記載されています。私はこれがボトルネックになることを理解することができます - それは確かに非常に大量です。
私はSVNがgitよりもパフォーマンスが良いと疑っています。たとえそれがあったとしても、gitははるかに優れています(Linus Torvaldsによれば、Gitを使用していないときは醜いですね:p) – ThiefMaster
まあ、 Linus [同意](http://stackoverflow.com/questions/984707/what-are-the-git-limits)でさえ、いくつかのユースケースではこれが状況だと言います。 Gitはリポジトリ全体で動作するため、いくつかのシナリオでは最良の選択肢ではありません。 – eis
バイナリファイルはほとんどありません。ファイルの数は、単一のオープンソースプロジェクトで見つかった数よりも大幅に多くなります。 – dromodel
- 1. VBA Chart操作が遅い
- 2. CC.netとGit操作のタイムアウトの問題
- 3. git archive fatal:プロトコルでサポートされていない操作
- 4. Counting columns、非常に遅いCountQueryとSliceQueryの操作
- 5. GWTキャンバスのピクセル操作が恐ろしく遅い
- 6. このプログラムのどの操作が遅いですか?
- 7. Git操作で作成されたschema.rbの競合の管理
- 8. Mac/OSXでGitが非常に遅い
- 9. Gitクローンが遅すぎる
- 10. 何の操作アトミック操作
- 11. Cruise Control&Git:「ソース管理操作がタイムアウトしました。」エラー
- 12. Git同期操作のためのppkの指定方法は?
- 13. Gitリポジトリとの同時操作は可能ですか?
- 14. Xcodeビルドサーバー。 Git操作が失敗しました
- 15. Reinitialized既存のGitリポジトリの操作を元に戻す方法
- 16. Samba共有へのクローン作成時にGitが遅くなる
- 17. 時代遅れに作成されたブランチのGit rebase
- 18. HBaseでの操作による操作
- 19. キャンバス操作と要素操作
- 20. WCF非同期操作+ IO操作
- 21. C#でデータを操作する操作
- 22. 操作
- 23. NSTextField新しい行操作
- 24. Haskellでn個のファイルを遅延IO操作として遅延読み込めますか?
- 25. Django:クエリが遅れていてインスタンスの作成が遅い
- 26. JavaプログラムからGITバージョン管理システムの出力を操作する
- 27. のgit-p4が提出し、私は次の操作を実行したとき
- 28. クロスステム操作エラー
- 29. Gridview操作
- 30. Python swf操作
どのような種類のファイルシステムを使用していますか? – Useless
Gitは大きなプロジェクトを高速で処理できることが知られています。低速ファイルシステムを使用していますか? –
マウントはNFS経由ですが、ヘッドはかなりハイエンドです。 – dromodel