プロジェクトファイルをバージョン管理下に置いておくべきですか?[閉まっている]


87

Eclipseの.project、.classpath、.settingsなどのプロジェクトファイルをバージョン管理下(Subversion、GitHub、CVS、Mercurialなど)に保持する必要がありますか?



12
とても建設的
QED

回答:


93

ポータブル設定ファイルをバージョン管理で保持する必要があります
つまり
、絶対パスが含まれていないファイルです。
以下が含まれます:

  • 。事業、
  • .classpath(絶対パスが使用されていない場合、これはIDE変数またはユーザー環境変数を使用して可能です)
  • IDE設定(ここで、「受け入れられた」回答に強く同意しません)。多くの場合、これらの設定には、このプロジェクトを自分のワークスペースにロードするユーザーに対して一貫して適用するために非常に重要な静的コード分析ルールが含まれています。
  • IDE固有の設定の推奨事項は、大きなREADMEファイルに記述する必要があります(もちろんバージョン管理もされています)。

私の経験則:
プロジェクトをワークスペースにロードし、IDEで適切に設定して数分で作業を開始するために必要なすべてのものが揃っていなければなりません。
追加のドキュメント、読むべきWikiページなどはありません。
それをロードし、セットアップし、行ってください。


@リッチ:ありがとう。他の読者のために、1年後に同じ質問にリッチの回答を参照してください。stackoverflow.com/questions/1429125/...
VonC

3
重要なフェーズ「...
すぐに始め

3
では、VCリポジトリにはすべてのIDEの構成ファイルが必要ですか?NetBeans、Eclipse、Emacs、vi、他に何がありますか?開発者は自分のIDEを設定する責任があるため、これらのファイルについては特に同意しません。
RHSeeger 2009年

3
@RH-「...独自のIDEを設定する必要があります」。一部のピエロがEclipseコードスタイルのプロパティを設定するのを忘れて、TABを含むソースファイルをチェックインするまでは、問題ありません。うーん!
スティーブンC

2
私も同意しません-CI、複数のバージョン、プラットフォーム、IDEなどを使用している場合、これはDRYをかなりひどく壊します。特に プラグインや設定が異なると、ここで何が起きるかに大きな影響を与えるからです。
jayshao 2010

30

.projectおよび.classpathファイルはい。ただし、バージョン管理でIDE設定を維持しません。いくつかのプラグインは、設定の永続化がうまく機能しない場合があり、一部の設定は、開発マシン間で移植性が低いことがわかりました。そのため、代わりに、開発者がIDEをセットアップするために必要な手順を強調するWikiページがあります。


2
-1何千人もの時間を無駄にするのではなく、それらのプラグインのバグレポートを提出することをお勧めします。次に、すべての安定した設定ファイルをバージョン管理下に置き、そのWikiページを必要最低限​​の部分に切り詰めます。
アーロンディグラ2013年

18

これらは私が生成されたファイルと見なすものであり、バージョン管理下に置くことは決してありません。たとえば、人々が異なるEclipseプラグインをインストールしている場合などは、マシンごと、開発者ごとに異なる可能性があります。

代わりに、新しいチェックアウト時にこれらのファイルの初期バージョンを生成できるビルドツール(Maven)を使用します。


正確には、mvn eclipse:eclipseは適切な.classpathと.projectを生成します。-DdownloadSources = trueおよび-DdownloadJavadocs = trueを渡すことができます。
アレクサンダーディミトロフ

pomのeclipseプラグインを設定して、常にソースとjavadocをダウンロードすることもできます。
クリスベスト

1
-1これは、IDEでプロジェクト設定を変更しない限り機能します。そして危険なのは、それらを変更しても、ファイルがバージョン管理されていないため気付かないことです。だから私はこれに反対票を投じたくてたまらない。これを行うのは、誰とも共有するつもりがないような非常に単純なプロジェクトに対してのみです。チームでは、デフォルトは通常は機能せず、各開発者に設定の変更を要求することは、混乱の確実なレシピです。
アーロンディグラ2013年

アーロン、これはIDEでプロジェクトファイルを変更しても機能します。次に何が起こるかは、変更を無警戒なチームに押し出さないことです。IDEプロジェクトには、マシンや開発者固有の情報が含まれている傾向があり、誰にとってもうまくいきません。使用するプラグインが多いほど、またIDEの使用が複雑になるほど、状況は悪化します。人々は自分のツールがどのように機能するかを知り、自分の構成を制御する必要があります。私はない、しかし、このアプローチは、問題の独自のセットがないわけではないことに同意します。
Chris Vest

また、これらのファイルを軽薄に編集するプラグインによって引き起こされるマージの競合を修正することは、かなり早く古くなります。
Chris Vest 2013年

7

ここで2つのオプションの間で引き裂かれています。

一方では、すべてのソースアーティファクトがバージョン管理に保存されており、ビルドスクリプト(ANTまたはMavenなど)が標準への準拠を保証している限り、誰もが最も生産性の高い開発ツールのセットを自由に使用できるはずだと思います使用するJDK、依存するサードパーティライブラリのバージョン、スタイルチェックの実行(checkstyleなど)、ユニットテストの実行などを正確に指定します。

一方、私は非常に多くの人々が同じツール(Eclipseなど)を使用していると思います。多くの場合、ビルド時ではなく設計時に標準化した方がはるかに優れています。たとえば、CheckstyleはEclipseプラグインとしてよりもはるかに便利ですANTまたはMavenのタスク-開発ツールのセットとプラグインの一般的なセットで標準化することをお勧めします。

私は、全員がまったく同じJDK、同じバージョンのMaven、同じバージョンのEclipse、同じセットのEclipseプラグイン、および同じ構成ファイル(たとえば、Checkstyleプロファイル、コードフォーマッタールールなど)を使用するプロジェクトに取り組みました。これらはすべて、ソース管理(.project、.classpath、および.settingsフォルダー内のすべて)に保持されていました。依存関係やビルドプロセスを継続的に微調整しているプロジェクトの初期段階で、それは本当に楽になりました。また、プロジェクトに新しいスターターを追加する際にも非常に役立ちました。

要するに、宗教戦争の可能性がそれほど多くない場合は、開発ツールとプラグインの基本セットで標準化し、ビルドスクリプトでバージョンのコンプライアンスを確保する必要があると思います(たとえば、Javaバージョンを明示的に指定することによって)。 JDKとEclipseインストールをソース管理に格納することには多くの利点があるとは思わないでください。プロジェクトファイル、構成、プラグインの設定(特にコードフォーマッタとスタイルルール)を含む、派生アーティファクト以外のすべてのものは、ソース管理に含める必要があります。

PS Mavenを使用している場合、.projectファイルと.classpathファイルは派生アーティファクトであるという言い方があります。これは、ビルドを実行するたびに生成し、POMから生成した後に手動で微調整する必要がなかった場合(または、いくつかの設定を変更して誤って変更したことがない場合)にのみ当てはまります。


6

いいえ、私はソフトウェアのビルドに必要なバージョン管理ファイルのみをバージョン管理しているためです。さらに、個々の開発者は、独自のプロジェクト固有の設定を持っている場合があります。


5

いいえ、私はMavenのヘビーユーザーであり、Q for Eclipseを使用しています .projectと.classpathを作成および更新プラグインをいます。プラグインの設定など、他のことについては、私は通常、READMEまたはWikiページでそれについて説明します。

また、私がこれまでに使用したものは、他のIDEがMavenプラグインを使用して、IDE(および自分自身)を満足させるために必要なファイルを生成することを好んでいます。


5

これはすべて意見だと思いますが、長年にわたるベストプラクティスでは、組織全体が1つのIDEで標準化されており、切り替えの意図がない場合を除いて、特定のIDEに固有のファイルをソース管理に保存しないでください。

どちらにしても、ユーザー設定を保存したくないのは間違いです。また、.projectには、開発者固有の設定を含めることができます。

標準化されたビルドシステムとして、MavenやAntなどを使用することをお勧めします。開発者は、数秒でIDEでクラスパスを構成できます。


1

はい。ただし、.settingsフォルダーを除きます。他のファイルをコミットすることはうまくいきます。ここに同様の質問があります


1

「生成されたファイルをバージョン管理しない」というアプローチには概ね同意しますが、問題があり、元に戻す必要があります。

注:私はVonCの回答、特に「Eclipseを数分で起動する」ポイントについても興味があります。しかし、それは私たちにとって決定的ではありません。

私たちのコンテキストは、m2eclipseプラグインを使用するEclipse + Mavenです。私たちは、可能な限り共通のディレクトリを持つ共通の開発環境を持っています。しかし、誰かがプラグインを試したり、設定の小さなことを変更したり、別のブランチ用に2番目のワークスペースをインポートしたりすることがあります...

私たちの問題は、プロジェクトをEclipseにインポートするときに.projectの生成が行われるが、後ですべての場合に更新されるわけでないことです。それは悲しいことであり、m2eclipseプラグインが改善されるため、おそらく永続的ではありませんが、今は本当です。したがって、構成が異なることになります。私たちが今日持っていたのは、いくつかの性質がいくつかのマシンの多くのプロジェクトに追加され、その後、大きく異なる動作をしたことです :-(

私たちが目にする唯一の解決策は、.projectファイルをバージョン管理することです(リスクを回避するために、.classpathと.settingsについても同じことを行います)。そうすることで、ある開発者がpomを変更すると、ローカルファイルがm2eclipseを使用して更新され、それらすべてが一緒にコミットされ、他の開発者はすべての変更を確認できます。

注:この例では、相対ファイル名を使用しているため、これらのファイルを共有しても問題はありません。

だから、あなたの質問に答えるために、私ははい、それらのファイルをコミットします。


私も好きでした:


「... m2eclipseを使用してポンポンを変更...」?m2eclipseはpomファイルとどのような関係がありますか?確かにそれを使用していますが、pomへの変更はプラグインから独立している必要があります。
RHSeeger 2009年

@RHSeegerおかげで、私は私の回答のこの部分の明確さを改善します。
KLE、

0

これらのプロジェクトファイルは、プロジェクトの作業中に時間とともに変化する可能性があるため、バージョン管理下に置いています。



0

IntelliJ IDEAを使用し、プロジェクト(.ipr)およびモジュール(.iml)ファイルの「.sample」バージョンをバージョン管理下に置いています。

ここでやや大きいのは共有と再利用です、バージョニングよりもです。ただし、これらの構成を共有する場合は、他のすべての隣に、リポジトリよりも配置するのに適した場所があります。

共有およびバージョン管理されたプロジェクトファイルのいくつかの利点:

  • タグ/ブランチをチェックアウトして、すぐに作業を開始できます
  • 新規開発者が最初に開発環境をセットアップし、速度を上げることが容易になります
  • これは、常に非常に満足するDRYをより忠実に守ります。その前に、すべての開発者はこれらのことを時々セットアップし、基本的に繰り返し作業を行わなければなりませんでした。もちろん、誰もが自分自身を繰り返すのを避けるための独自の小さな方法がありましたが、チーム全体を見ると、多くの重複した努力がありました。

IDEAでは、これらのファイルには次のような構成が含まれていることに注意してください。「ソース」および「テストソース」ディレクトリは何ですか。外部依存関係に関するすべて(ライブラリjarの場所、関連するソースまたはjavadocsがある場所); ビルドオプションなど。これは開発者ごとに変わらないものです(私はこれに同意しませかなり)。IDEAは、プラグイン構成だけでなく、より個人的なIDE設定を他の場所に保存します。(私はEclipseをよく知りません。これはまったく異なる場合と異なる場合があります。)

私は言うこの答えに同意します:

プロジェクトをワークスペースにロードし、IDEでプロジェクトを適切に設定して数分で作業を開始するために必要なすべてのものが揃っていなければなりません。[...]ロードして、セットアップして、実行します。

そして、バージョン管理されたプロジェクトファイルのおかげで、このようになっています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.