回答:
メタデータはソース管理で管理されるべきではありません。それらには主にワークスペースに関連するデータが含まれています。
唯一の例外は、.launch
XMLファイル(ランチャー定義)です。
彼らはにあります
[eclipse-workspace]\.metadata\.plugins\org.eclipse.debug.core\.launches
そして、それらをプロジェクトディレクトリにコピーする必要があります。プロジェクトが更新されると、それらの構成が[実行構成]ダイアログに表示されます。
そうすれば、これらの起動パラメーターファイルをSCMで管理することもできます。
(警告:DOは、「関連するリソースが削除されると削除の設定」オプションをオフに実行 / 起動 / 起動の設定は再びそれをインポートするために、ソフト削除のプロジェクトに共通している-の再初期化を強制するために:環境設定パネルEclipseメタデータ。ただし、このオプションをオンにすると、詳細な起動パラメーターが削除されます!)
project-dir/.project
project-dir/.classpath
project-dir/.settings/*
(特にあなたのSCMであるべき.project
と.classpath
に応じて、Eclipseのドキュメント)。
目標は、誰でも自分のSCMワークスペースをチェックアウト/更新し、EclipseプロジェクトをEclipseワークスペースにインポートできることです。
そのためには、リンクされたリソースを使用して、.classpathで相対パスのみを使用する必要があります。
注:project-dir
Eclipseワークスペースの下に作成されたディレクトリではなく、「外部」プロジェクトディレクトリを参照する方が適切です。これにより、2つの概念(EclipseワークスペースとSCMワークスペース)が明確に分離されます。
以下のようipsquiggleはコメントに言及し、私はに言及したように、古い答えにように、あなたが実際に起動設定を保存することができ、ファイルを共有プロジェクトディレクトリに直接。すべての起動構成は、他のプロジェクトファイルと同様にバージョン管理できます。
(ブログ投稿のヒント: KDからの起動構成の作成と共有から)
.project
とりあえず自分のワークスペースのためにバージョン管理を無視します。ただし、他のすべてのユーザーがEclipseワークスペースにすばやくインポートできる共通のEclipseプロジェクト定義を奪わないでください。必要な瞬間だけに合う定義が1つだけあるからです。
CDT構成ファイルがソース管理に適していないことは何の価値もありません。.cprojectファイルが頻繁に変更され、競合を引き起こすバグが報告されています。リポジトリでcdt-projectファイルを共有すると、常に競合が発生するをご覧ください。
Mavenを使用するプロジェクトなど、一部のプロジェクトはPOMに基づいて.projectファイルを生成します。
そうは言っても、それ以外は-.metadataをソース管理に含めるべきではありません。プロジェクトは、標準の管理方法などに基づいて、projectdir / .settingsが行うかどうかを決定する必要があります。開発者が標準に基づいて環境をセットアップすることを正直に信頼でき、プロジェクトごとに特別なものをカスタマイズする必要がない場合は、それらをカスタマイズする必要はありません。私、すべてのプロジェクトを具体的に構成することをお勧めします。これにより、開発者はデフォルトの設定を何度も変更することなく、同じワークスペース内の複数のプロジェクトのものに取り組むことができ、設定を非常に明示的にして、デフォルト設定がプロジェクトの標準に一致するように上書きします。
唯一の難しい部分は、それらがすべて同期していることを確認することです。ただし、ほとんどの場合、プロジェクト間で.settingsファイルをコピーできます。ソース管理で特に必要のないものがある場合は、SCMがサポートしている場合は、それらに対してsvn:ignoreを設定するのと同じことを行います。
.classpathファイルは間違いなくscmにチェックインするのに適した候補です。手動で設定するのは大変な作業であり、新しい開発者がプロジェクトに参加するのは難しいためです。他のソースから生成できるのは事実です。その場合、他のソースをチェックインします。
.settingsは設定により異なります。これは灰色の領域ですが、一部の設定はほぼ必須であり、プロジェクトをチェックアウトしてEclipseにインポートし、すべてを設定して問題なく実行できると便利です。
したがって、このプロジェクトでは、CVS.settingsと呼ばれる.settingsフォルダーのコピーを保持しており、それを.settingsにコピーするantタスクがあります。CVSからプロジェクトを取得したら、「eclipsify」antタスクを呼び出して、デフォルト設定を新しい.settingsフォルダーにコピーします。プロジェクトで開発するすべての人が必要とする設定を構成する場合、それらをCVS.settingsフォルダーにマージして戻し、それをCVSにコミットします。この方法でSCMに設定を保存すると、意識的なプロセスになります。開発者は、大きな変更がチェックインされるときに、それらの設定を.settingsフォルダーにマージする必要があります。しかし、驚くほどうまく機能するシンプルなシステムです。
私はそれらのどれも言いません。それらには、ワークステーションにのみ関連する情報が含まれている可能性があります(私はライブラリなどすべてのパスについて考えています)。また、チームの誰かがEclipseを使用していない場合はどうなりますか?
考慮してください:
.classpath
.project
.launch
プロジェクト相対パスを使用する限り、これらはバージョン管理されている必要があります。これにより、他の開発者がプロジェクトをチェックアウトしてすぐに作業を開始できます。他の開発者が経験したセットアップの苦労をすべて経験する必要はありません。
Eclipseの開発者がワークスペース全体をチェックアウトしてすべての適切なプロジェクトで事前構成できるように、バージョン管理に.metadataも含めるように誘惑されるかもしれませんが、誰もがいつでも作業できるように、多くのユーザー固有の情報が含まれています変更なので、.metadataを含めないことをお勧めします。既存のすべてのEclipseプロジェクトをインポートするだけで、ローカルワークスペースを簡単に構築できます。
common
タブでを選択しますSave as > shared file
。これにより、プロジェクトフォルダーに直接ドロップされるので、プロジェクトの残りの部分とSCMできます。