2012-04-21 9 views
6

かなり大規模で複雑な一連のJavaプロジェクト(100万行以上のコード)と10年の歴史を持つEGitを使用しています。
ここで私はEGitの深刻なパフォーマンス上の問題に直面しています。Javaファイル内の小さな1行の変更でさえ、EGitがシステム全体を遅くしている数分間インデックスを再作成するためです。 実際、gitのコマンドラインでさえ少し遅いですが、 "git status"がコマンドラインから約1分かかってしまいますが、このパフォーマンスの問題で暮らすことができます。& EGitコミットダイアログの遅さの問題(link)。コミットと更新にgitコマンドラインを使用することができますが、私はEclipseのパフォーマンスと生産性に影響を与えないようにトレードオフしたくありません。Eclipse上でEGitを最適化するための提案

  1. 追加されたすべてのクラスフォルダを除外ファイルに:

    は、私がグーグルを行うと、周りの人に尋ねることで試してみましたものです。実際には、時間のためにクラスフォルダを.gitignoreに入れてみました。
  2. マシンを1日オンにしてインデックス作成を完了するのに十分な時間を与えてください。
  3. Gitのステージング、ヒストリー、および他のすべてのEclipseビューは、開発中にEclipseワークベンチで閉じられます。
  4. "git gc"を実行しました - コマンドラインのパフォーマンスは違いましたが、EGitの違いはほとんどありません。
  5. Git用のチェックされていないラベルデコレータ。 「設定」 - >「一般」 - >「外観」 - >「ラベル装飾」を選択します。
  6. JGitがパス変換にcygwinを使用している可能性があるフォーラムのどこかで、cygwinのパスを削除しました。
  7. Eclipseのウィンドウキャッシュを10から70mに増やしました(環境設定 - >チーム - > Git - >ウィンドウキャッシュ)。

PS:Gitリポジトリがsvnリモートリポジトリを指しています。また、私はgit初心者ですので、セットアップに間違いがあったかもしれませんので、何かを指摘してください。

ここに私のシステム情報がありますが、私には派手なハードウェア仕様はありませんが、スペアRAM(8GB)はいくつかあります。

  • のgit - GUIバージョン0.16 GITGUID
  • Gitのバージョン:1.7.10.mysysgit.1
  • JDK 1.6_025
  • Eclipseのバージョン:パラメータを使用して3.7.2のJava EEバージョン-Xms1536m -Xmx1536m
  • EGit:1.3.0.201202151440
  • のWindows 7プロセッサ:Core 2 Duoプロセッサの2.6GHzの

答えて

0

ですCVCS(集中型VCS)とDVCS(分散型)の間の問題VCS:

  • 1つのSVNリポジトリには、GB相当のデータが含まれています。
  • Gitリポジトリを小さくしておき、複数のGit reposを介して表現するにはsubmodulesを利用する必要があります。

私は多くのreposが1つの巨大なGitリポジトリよりも優れたパフォーマンスを示すと思われます。それ以外の場合は、bug 323839のように同期の問題が発生します。

しかし、これはGitリポジトリとSVNリポジトリの間の手動同期を、GitリポジトリからコピーしているSVNワークスペースを介して、またはGitリポジトリの新しいEvolutionsをコピーして、

+1

私はLinuxファイルシステムがはるかに高速であることに同意しますが、同じ大規模なgit repoがIntelliJのLinuxボックスでかなり良い性能を発揮するため、Egitの実装にはいくつか問題があります。ですから、私はSVNのクローンである中央のGitリポジトリを1つ作成して、巨大な中央のGitリポジトリから複数の小さなGitリポジトリを作成することはできますか? – Hemant

+0

@Hemantいいえ、できません(SVNリポジトリにコミットする可能性はありません)。すべての小さなものをサブモジュールとして宣言する1つのGitリポジトリを定義できますが、SVNリポジトリとのリンクはありません。そのため、手動同期メカニズムが残っています。 – VonC

+0

Vonc - ご清聴いただきありがとうございます。私は自分の選択肢を探っていきます...また、Egitチームがいくつかのパフォーマンスチューニングをより速く行うことを願っています。 – Hemant

3

これはおそらくあなたの問題ではありませんが、このページはegitパフォーマンスに関してgoogleに掲載されています。 一度、パフォーマンスの問題の原因が追跡されない(索引付けされた)ファイルです。 ローカライズされていないファイルが多数存在しないことを確認してください。これは、パフォーマンスに重大な影響を与えます。 10K +ファイルのディレクターを削除し、コミットのパフォーマンスが1分以上かかることから、コミットダイアログを開いて数秒かかりました。

+0

私は自分のリポジトリに追跡されていないファイルを持っていません。私は約28kのJavaファイルと136kのコミットを持っている巨大なリポジトリに取り組んでいますが、それらのほとんどはすでに詰め込まれているはずです。 – Hemant

+0

'git:// git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git'をクローンしてみてください。 Linuxカーネルのチェックアウトには約45kのファイルがあり、カーネルには300k以上のコミットがあります。 28kファイルと136kコミットのレポは大きなものではなく、大きなものです。 –

+0

巨大なリポジトリの場合は、 'https:// github.com/mozilla/gecko-dev.git'を複製してみてください。クローンはワイヤーだけで約1.5GBのデータを転送する必要があります... –