2012-05-10 12 views
30

私はGitへの移行を開始する典型的なEclipse/Subversionユーザーです。私はgitの基本的なコンセプトを研究し、最初はリポジトリアプローチごとに1つのプロジェクトに固執して、物事を単純にすることに決めました。私はまだ各プロジェクトのリポジトリを配置する場所を決めるのには問題があります。GitリポジトリをEclipseワークスペースの内部または外部に保つ方が良いですか?

私はthis questionの回答を見直すのに多くの時間を費やしましたが、その質問の作成者は、リポジトリがEclipseワークスペース内にある場合、リポジトリを管理するためにEclipseのみを使用できると仮定していました。もちろん、真実ではありません。

しかし、その質問について私が最も驚いたことは、1つの回答(受け入れられた回答を含む)がリポジトリをEclipseワークスペース内に維持することを提案したという事実でした。一方、答えはEGit User Guide正反対。

しかし、実際には、Eclipse/EGitによって実装されたいくつかのアプローチがEGitの推奨事項と矛盾しているように見えます。

たとえば、New Project Wizardを使用してGitから新しいPHPプロジェクトを作成し、リポジトリがリモートの場合、Eclipse/EGitはEclipseワークスペースにプロジェクトフォルダを作成し、リポジトリ(.git)をプロジェクトフォルダ。これはEclipseワークスペース内にすべてカプセル化されているので、私が実際に望む最終結果です。

ただし、New Project Wizardを使用してローカルのGitリポジトリを選択した場合、Eclipse/EGitはリモートリポジトリと同様にリポジトリを複製しません。代わりに、プロジェクトの場所としてそのリポジトリの作業コピーを使用し、その場所に.projectやその他のメタデータを作成し、その作業コピー内にプロジェクトと同じ名前の新しい(一見不要な)フォルダを作成します例えば、~/git/blah/blah)。その不要なフォルダを削除すると、最初の例と同じ構造になりますが、プロジェクトフォルダがEclipseワークスペースフォルダのサブフォルダでないという唯一の違いは、ファイルシステム上の別の場所です(例。~/git/blah)。このアプローチが唯一肯定的なことは、EGitユーザーガイドの推奨事項を遵守することですが、技術的観点からは、これが最初の例とはまったくどのように異なっているかを理解することは困難です。

私は、これらのアプローチのそれぞれがどのような経験をしているのか、またEGitユーザーガイドの推奨事項を無視すると落とし穴がどのようなものになるのか疑問に思っています。

+0

[私はgitリポジトリをホームまたはEclipseワークスペースに格納する必要がありますか?](http://stackoverflow.com/questions/7685246/should-i-store-git-repository-in-home-or-eclipse-ワークスペース) – mallardz

+0

@JamesGワークスペースの変更をgitディレクトリに反映するにはどのような方法がありますか?ソースコードの貼り付けをコピーするより良い代替手段はありますか? –

+0

私はもはやEclipseを使用しません - 私はPHPStormを使用します - 私はプロジェクトフォルダにクローンしてそこで作業を始めます。私はPHPStormがプロジェクトとは別のフォルダにリポジトリを格納するオプションを提供するとは思わない。正直言って、私は4年前にこの質問を投稿して以来私が聞いて読んだことに基づいて、多くの人が彼らのプロジェクトフォルダの外に彼らのリポジトリを保管しているとは思わない。 – JamesG

答えて

17

両方の解決策の意味は、リンクしたユーザーガイドに直接記載されています。私は一部

これはパフォーマンスの問題に

は残念ながら非常に真であるなりますことを伝えることができます。したがって、作業領域内に膨大な数のファイルがあるgitディレクトリがある場合、作業領域内のすべてのファイルをスキャンするため、IDEをブロックするダイアログボックスが表示されます。私の現在の20000ファイルでは、これはコミットごと、スイッチごとに10〜20秒待つことを意味します...

私は幸いにも他の選択肢を使用することができます(作業領域外のgit作業ディレクトリ)多くのsnappier感じ、それはマージして切り替えるのは楽しいです。

大規模なプロジェクトの場合は、作業領域外のgitディレクトリを第1の選択肢と見なしてください。私はオリジナルポスターと同じ移行をやっているし、同じ疑問がEgit勧告上に発現されている別のスレッドを発見した

+0

私はEclipseを追加して、EGit自体がgit reposを作業領域外で使用するように設定しました。うまくいきました。 –

+3

@Bananeweizenあなたはgit作業ディレクトリをワークスペースの外に持っていて、全てがうまくいっていることを実験したとお伝えしました。あなたの大きな(20,000ファイル)プロジェクトまたはより小さなサンドボックスプロジェクトでこれらの実験の1つが実行されましたか?つまり、20,000件のファイルプロジェクトが作業領域外でよりスムーズに機能していると確信できますか? – JamesG

+0

@Bananeweizen git addを実行する前に、すべてを別のディレクトリにコピーしてから、リポジトリにコピーし直しますか? –

3

Should I store git repository in Home or Eclipse Workspace?

@JamesG だから、これはあなたのレイアウトのですか?

~/projectA/workspace/.metadata 
~/projectA/workspace/subproj1/.project 
~/projectA/workspace/subproj2/.project 
~/projectA/subproj1/.git 
~/projectA/subproj1/file1 
~/projectA/subproj2/.git 
~/projectA/subproj1/file2 
+0

その投稿にリンクをありがとう。 1つのgitリポジトリ内に複数のプロジェクトを置くことと、リポジトリごとに1つのプロジェクトを作ることの間には大きな違いがありました。前者の場合は、ワークスペースにリポジトリを置くことは意味をなさないことに同意します。なぜなら、.gitディレクトリはプロジェクトと同じレベルにあります。これは私にとって間違っているだけです。私のケースでは、私はリポジトリの構造を決定する贅沢を持っているので、プロジェクトごとに1つのレポを決めました。それぞれのEclipseプロジェクトはレポのクローンです。このアプローチは、大きなプロジェクト(たとえばZF2)であっても、私にとってはうまくいきました。 – JamesG

5

なぜ2つの可能性を許可しないのですか。

.metadataフォルダに多数のファイルを生成する大きなプロジェクトの場合は問題ありません。 パフォーマンスを向上させるために、.metadata行を.gitignoreに入れるのはかなり簡単ですが。

私の場合(Android開発版)には、約50種類のファイルしか含まれていない約35種類のプロジェクトがあります。

このすべてのプロジェクトは、このアプリケーションのアプリケーションプロジェクトとライブラリプロジェクトを含むさまざまな宇宙にあります。 (アプリケーションごとのサブモジュールと1つのリポジトリ)

  • 私は(パッケージエクスプローラで スクロール/オープン/クローズプロジェクトに費やす時間)内のすべての私のプロジェクトでのワークスペースを持っている必要がありますか?

  • すべてのプロジェクトの.metadatasフォルダだけを含む最後のフォルダと2つの異なるベースフォルダ(ProjectsとWorskspaces)を管理する必要がありますか?

私にとってこれは意味がありません。

EGitチームへのメッセージ:

なぜ開発者は通常、自分のプロジェクトのフォルダを整理する方法を変更:

---- Worspace

---- Worspace/.metada

----- Worspace/.git

----- Worspace/Project1

----- Worspace/LibraryProject1

----- Worspace/LibraryProject2

私はちょうどあなたをパフォーマンスの理由を理解するが、非常に大きなプロジェクトで、開発者のわずか5%を(ビッグの.metadataを生成する)

私たちがEclipseのようなプロジェクトを構造化することを許さないことは、何年も前から私たちに言います。

あなただけの、メッセージはそれはそれはお勧めできませんです、私たちに警告していても、worspaceフォルダ(「C:\ Worspaces \空のディレクトリではありません」)にクローンプロセスをブロックしませんでした

EGitにされます素晴らしいツールですが、私は実際にこのBash方法beacauseを使用することを考えています
制限。お返事

PS用

ありがとう:Eclipseの下で、開発効率向上の多くの異なる場合があります。 パフォーマンス上の問題で、EGitがクラッシュしない場合は、私たちに警告してください。しかし、小さなプロジェクトの場合は私たちをブロックしないでください。

+1

私は同意します。 EGitプラグインは正常に動作しますが、これは大きなアーキテクチャ上の欠陥です。残念ながら、私はgitの使用に切り替えることができません。 –

関連する問題