web-dev-qa-db-ja.com

Android studio-.ideaディレクトリ全体をgitに無視する必要がありますか?

AndroidStudio.gitignoreファイルの例を見ましたが、中には.ideaがあるものとないものがあります。

.ideaディレクトリ全体を.gitignoreに追加しない正当な理由はありますか?

完全に無視されるべきではない場合、.idea内に.gitignoreにある特定のファイル(.imlなど)がありますか?

124
dors

このページをご覧ください:

プロジェクト構成ファイルに関するIntelliJドキュメント

「ディレクトリベースの形式」では、特定の行が興味深いです:

.ideaディレクトリーには、一連の構成ファイル(.xml)が含まれています。各ファイルには、compiler.xmlencodings.xmlmodules.xmlなど、ファイルの名前に反映される特定の機能領域に関連する構成データの一部のみが含まれます。

ほとんどすべてのファイルには、コンポーネントモジュールの名前や場所、コンパイラ設定など、プロジェクト自体の情報コアが含まれています。したがって、これらのファイルはバージョンの下に保存することができますコントロール

ただし、プロジェクトをIDE依存にするために適切にヘイトします(現在、NetBeansで作成されたプロジェクトに取り組んでおり、会社の標準となるEclipseで使用するのが痛いです)。

だから、あなたの質問に答えるために:

  1. 行う場合使用しないMavenやGradleのようなものを使用して依存関係とビルドを管理します:バージョン管理下にディレクトリを保持します。これにより、プロジェクトと依存関係の正しい構成がすべてのユーザーに利用可能になります。カウンターパートでは、すべての開発者が、設定ファイルで定義したのとまったく同じ方法で環境を設定する必要があります。
  2. あなたがMavenやGradleのようなものを使用する場合:これらのツールを正しく設定し、ディレクトリをバージョン管理下に置かない。実際、設定ファイルに含まれるすべての情報はMaven/Gradleファイルに保存する必要があります。次に、開発者が環境に応じてIDEを構成できるようにします。このように、Eclipse、IntelliJ、Linux、Windowsを使用することはもう問題になりません。
95
mithrop

OK、だからいくつかの「はい」と「いいえ」の答えの後、「はいといいえ」の答えを追加しています:)

問題は、.ideaがプロジェクトビルド構成(依存関係宣言)とプロジェクト設定(検査など)の両方に使用されることです。

ビルド構成にIDEを使用することは絶対に望まないでしょうが、チーム間で設定を共有したい場合があります。そのため、.ideaコンテンツの一部(librariesフォルダーやmodules.xmlファイルなど)のみを無視する必要がありますが、バージョン管理には他のもの(たとえば、copyrightdictionariesおよびinspectionProfilesフォルダーと.ideaの下のファイルとdynamic.xmlcodeStyleSettings.xmlなど)。

36
JBaruch

プロジェクト構成をVCに保持するという概念は有効です。すべての開発者がたまたまプロジェクトでPHPStormを使用していたため、チームでこれを行いました。そのため、共通の構成を維持することは理にかなっています...同じ辞書ファイル、同じコーディング標準ルール、同じプラグイン構成を使用したかったのです。

「概念」でこれを修飾する理由は、JetBrainsの.ideaフォルダーに問題があり、使用できなくなったためです。これらはおそらく回避または修正できた問題でしたが、それを正しく行う方法は不明であり、開発者として私たちは作る方法について解決策を探す時間も欲望もないので、それはJetBrainsの欠点だと思いますIDEは正常に機能します。

とはいえ、抱えていた問題は次のとおりです。

  • プロジェクトフォルダーのシンボリックリンクが正しく機能しません。プロジェクトを設定するとき、ホームディレクトリにシンボリックリンクします。私たちが発見したのは、プロジェクトが具体的なディレクトリのように扱うのではなく、正確なシンボリックリンクを使用するように設定されていることです。これは、別の開発者がプロ​​ジェクトを別の場所に保持する場合、または単にシンボリックリンクを使用しない場合、シンボリックリンクを非常に文字通り探しているため、ディレクトリ全体がプロジェクトナビゲーターから失われることを意味します。さらに悪いことに、構成でこのパス値を見つけることができませんでした。 .ideaフォルダーを構成するファイルで正確な構成を見つけることができませんでした。
  • 定義ファイルはデフォルトでユーザーに分割されます。つまり、辞書にWordを追加する場合、jgreathouseの定義としてリストされますが、他のユーザーには独自の定義セクションがあります。フラグが立てられた単語は、他のユーザーのスペルミスとして引き続き表示されます。これは望ましくありません。定義ファイルに追加する理由は、IDEが間違っているためです。これらの定義を他のユーザーと直感的に共有したいです。
  • 同僚は、IDEが現在メモリにある構成で構成を上書きするため、構成を上書きし続けました。つまり、開発者が作業し、Originからリポジトリをマージします。これには、IDE構成の変更ではなく、プロジェクト構成の変更が含まれます。 IDEの現在のメモリ内構成で.idea構成を上書きします。私の意見では、これにより.idea構成が共有構成として使用できなくなります。これを回避するために、開発者は文字通りIDEのそのインスタンスをシャットダウンし、レポジトリをプルし、IDEを再度開く必要があります。 IDEが現在メモリ内の構成で即座に上書きする場合、共有構成を保持することは意味がありません。共有構成がまったくないようなものです。

Visual StudioとNetbeansを使用して、これらのタイプのIDE構成をVCで以前に実行したことがあり、常に問題ありませんでした。しかし、.ideaを使用すると、単に使い物にならないと感じ、残念です。 JetBrainsがその上に乗って、より良いユーザーエクスペリエンスになることを願っています。

6