私たちのチームの全員がIntelliJ IDEAを使用しており、ビルド構成、設定、および検査を共有できるように、プロジェクトファイル(.iprおよび.iml)をソース管理に入れると便利です。さらに、TeamCityとの継続的インテグレーションサーバーでこれらの検査設定を使用できます。(ユーザーごとのワークスペース.iwsファイルは.gitignoreファイルにあり、ソース管理にはありません。)
ただし、IDEAでほぼ何を実行しても、これらのファイルはほとんど変化しません。IDEAの問題データベース(IDEA-64312)に問題があるため、おそらくこれはIDEAのバグと考えるかもしれませんが、これは当面の問題に対処する必要があります。
最近まで、Subversionを使用していましたが、最近Gitに切り替えました。無視したプロジェクトファイルの変更リストを作成することに慣れ、他のユーザーと共有したいプロジェクトファイルの変更がない限り、チェックインしませんでした。しかし、Gitの場合、本当の力は(私たちが調査しているものから)それが奨励する継続的な分岐であるように思われ、分岐間の切り替えは、プロジェクトファイルが常に変更されているので苦痛です。多くの場合、何とかして変更をマージでき、新しいブランチに適用されているプロジェクトファイルの変更を処理しようとします。ただし、新しいブランチがプロジェクトファイルを変更した場合(ブランチがまだ他のブランチにない新しいモジュールで作業しているなど)、gitはエラーをスローします 両方のブランチに変更があり、ローカルに変更がある場合は、ファイルにマージすることに意味があり、むしろそのポイントを理解できます。コマンドラインから、「git checkout」コマンドで「-f」を使用して、ローカルの変更を強制的に破棄し、代わりにブランチのブランチを使用することができますが、(1)IDEAのGit Checkout GUIコマンド(10.5.1)私たちが見つけることができるオプションとしてそれを持っているようには見えないので、定期的にコマンドラインに切り替える必要があります、そして(2)それを使用する習慣になりたいかどうか確信がありませんフラグを付け、Gitにローカルの変更を破棄するように指示します。
それで、これを処理しなければならないオプションについての考えをいくつか示します。
- プロジェクトファイルを完全にソース管理から除外します。それらを.gitignoreに入れ、他の方法で、または別の場所でソース管理に置くなどして、各人とTeamCityに配布します。私たちのチームは十分に小さいため、このオプションは十分に検討できますが、すばらしいとは言えません。
- 特定の時点でどのブランチにあるどのファイルを確実に管理するかを試みて、それと共存し続けます。この一環として、各開発者がシステム上に各プロジェクトの複数のコピーを持つことをお勧めします。そうすることで、各プロジェクトファイルの異なるセットに異なるブランチにチェックアウトできます。
- プロジェクト(.ipr)だけをソース管理に配置し、モジュール(.iml)ファイルをソース管理および.gitignoreファイルに配置しないでください。定期的に.ipr内で自動的に切り替わるように見える主なものは、共有ビルド構成の順序ですが、それらの設定方法に関する情報を個別に共有することもできます。IDEAが、特に新しいチェックアウト時に、ファイルの一部のみを持っているというこの種のことをどのように処理するかはよくわかりません。
おそらくGitとIDEAの両方が持つと思われる巨大なカスタマイズ性に対処するために、私たちが見逃している明らかな(または非自明な)解決策があることを願っています。しかし、この問題を抱えているのは私たちだけではあり得ないようです。スタックオーバーフロー上の種類の類似した質問には、3495191、1000512、および3873872、彼らはまったく同じ問題だと私は知らない、と多分誰かが私がきた様々なアプローチのための長所と短所を思い付くことができます概説、それらの質問への回答にリストされているアプローチ、または彼らが推奨するアプローチ。