Android studio - haruskah seluruh direktori .idea di git diabaikan?

137

Saya melihat banyak contoh .gitignorefile untuk AndroidStudio , beberapa ada .ideadi dalamnya, dan beberapa tidak.

Apakah ada alasan yang baik untuk tidak menambahkan seluruh direktori .idea ke .gitignore?

Jika tidak boleh diabaikan sepenuhnya, apakah ada file tertentu di dalam .idea (seperti .iml) yang harus dalam .gitignore?

dors
sumber
Saya mengabaikan .ideakecuali beberapa file di bawah .idea/runConfigurations/.
Daniel
1
superset: stackoverflow.com/questions/16736856/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Jawaban:

105

Anda dapat melihat halaman ini:

Doc IntelliJ tentang file konfigurasi proyek

Dalam "Format berbasis direktori", baris tertentu menarik:

Direktori .idea berisi sekumpulan file konfigurasi (.xml). Setiap file berisi hanya sebagian dari data konfigurasi yang berkaitan dengan area fungsional tertentu yang tercermin dalam nama file, misalnya, compiler.xml, encodings.xml, modules.xml.

Hampir semua file berisi informasi inti proyek itu sendiri, seperti nama dan lokasi modul komponennya, pengaturan kompiler, dll. Jadi, file ini dapat (dan harus) disimpan di bawah kendali versi.

Namun, saya BENAR-BENAR membuat proyek yang bergantung pada IDE (saya saat ini sedang mengerjakan proyek yang dibuat dengan NetBeans dan menyakitkan menggunakannya dengan Eclipse yang menjadi standar perusahaan saya).

Jadi, untuk menjawab pertanyaanmu :

  1. Jika Anda tidak menggunakan sesuatu seperti Maven atau Gradle untuk mengelola dependensi dan build: pertahankan direktori di bawah kontrol versi . Dengan cara ini, konfigurasi proyek dan dependensi yang benar akan tersedia untuk semua orang. Di mitra, semua pengembang harus mengatur lingkungan mereka persis sama dengan yang Anda tentukan di file konfigurasi.
  2. Jika Anda menggunakan sesuatu seperti Maven atau Gradle: konfigurasikan alat ini dengan benar dan jangan biarkan direktori di bawah kontrol versi . Sebenarnya, semua informasi yang ada di dalam file config harus disimpan di file Maven / Gradle. Kemudian biarkan developer Anda mengonfigurasi IDE mereka bergantung pada lingkungannya. Dengan cara ini, menggunakan Eclipse, IntelliJ, Linux, Windows ... tidak akan menjadi masalah lagi.
tanaman merambat
sumber
9
Perhatikan paragraf berikutnya, meskipun: "Pengecualiannya adalah file workspace.xml. Ini menyimpan pengaturan pribadi Anda ... Jadi sepertinya Anda tidak ingin berbagi file ini dengan rekan kerja Anda."
Dalbergia
40

Oke, jadi setelah beberapa jawaban "Ya" dan "Tidak", saya menambahkan jawaban "Ya dan tidak" :)

Masalahnya adalah yang .ideadigunakan untuk konfigurasi build project (deklarasi dependensi) dan setelan project (inspeksi, dll.).

Anda pasti tidak ingin menggunakan IDE Anda untuk konfigurasi build Anda, tetapi Anda mungkin ingin membagikan pengaturan tersebut di antara tim. Itulah mengapa Anda harus mengabaikan hanya bagian dari .ideakonten (seperti librariesfolder dan modules.xmlfile), tapi tetap orang lain dalam kontrol versi (misalnya copyright, dictionariesdan inspectionProfilesfolder dan file di bawah .ideaseperti dynamic.xml, codeStyleSettings.xml, dll).

JBaruch
sumber
Seberapa spesifik alamat file iml?
dors
1
File iml pasti harus diabaikan.
JBaruch
1
Saya masih berpikir bahwa konfigurasi tidak boleh disimpan dalam file yang bergantung pada IDE, sehingga Maven / Gradle lebih baik melakukannya.
mithrop
@mithrop masalahnya - Anda tidak dapat mendeklarasikan jenis konfigurasi ini dalam file Maven / Gradle. Ini adalah format kepatutan Idea sendiri dan tidak memiliki alternatif portabel di Maven / Gradle.
JBaruch
Oh ya, kamu benar. Bagaimanapun, jika tidak dapat memasukkannya ke dalam file maven / gradle, Anda akan memiliki masalah dengan saat Anda mengimpor proyek ke IDE lain (yang merupakan masalah yang saya benci untuk ditangani). Tetapi saya sangat setuju dengan Anda (jika membaca jawaban saya, Anda akan melihat bahwa saya memang benar): Anda menyertakan file atau tidak tergantung kebutuhan Anda :)
mithrop
7

Konsep menjaga konfigurasi proyek di VC valid. Saya melakukan ini dengan tim saya karena semua pengembang kami kebetulan menggunakan PHPStorm untuk proyek kami dan jadi masuk akal untuk menyimpan konfigurasi umum ... dalam konsep. Kami ingin menggunakan file kamus yang sama, aturan standar pengkodean yang sama, dan konfigurasi plugin yang sama.

Alasan mengapa saya memenuhi syarat ini dengan "dalam konsep" adalah karena ada masalah dengan folder .idea JetBrains yang membuat kami tidak dapat menggunakannya. Ini mungkin masalah yang bisa dihindari atau diperbaiki, tetapi tidak jelas bagi kami bagaimana melakukannya dengan benar, dan kami pikir itu adalah kesalahan JetBrains karena sebagai pengembang kami tidak punya waktu atau keinginan untuk mencari solusi tentang cara membuatnya. IDE kami bekerja dengan benar.

Karena itu, masalah yang muncul adalah sebagai berikut:

  • Folder proyek Symlinking tidak berfungsi dengan benar. Ketika saya menyiapkan proyek saya, saya menghubungkannya ke direktori home saya. Apa yang kami temukan adalah bahwa proyek tersebut diatur untuk menggunakan symlink yang tepat daripada hanya memperlakukannya seperti direktori konkret. Ini berarti bahwa jika pengembang lain menyimpan proyeknya di tempat yang berbeda, atau tidak menggunakan symlink, seluruh direktori akan hilang dari navigator proyek karena secara harfiah mencari symlink. Yang lebih buruk adalah saya tidak pernah dapat menemukan nilai jalur ini dalam konfigurasi. Kami tidak dapat menemukan konfigurasi yang tepat dalam file yang merupakan folder .idea kami.
  • File definisi dipartisi ke pengguna secara default. Artinya jika saya ingin menambahkan sebuah kata ke kamus saya, kata itu akan terdaftar sebagai definisi untuk saya, jgreathouse, tetapi pengguna lain akan memiliki bagian definisi mereka sendiri. Kata yang ditandai akan tetap muncul sebagai kesalahan ejaan untuk pengguna lain. Ini tidak diinginkan. Alasan saya menambahkannya ke file definisi saya adalah karena IDE-nya salah. Saya ingin definisi ini dibagikan secara intuitif dengan pengguna lain.
  • Kolega terus menimpa konfigurasi karena IDE mereka akan menimpa konfigurasi dengan konfigurasi mereka yang saat ini ada di Memori. Yang saya maksud adalah, pengembang akan bekerja, dan menggabungkan repositori mereka dari asalnya, yang akan berisi perubahan konfigurasi proyek, alih-alih mengubah konfigurasi IDE mereka, atau bahkan memberi mereka pilihan, itu akan secara otomatis menimpa konfigurasi .idea dengan konfigurasi dalam memori saat ini dari IDE mereka. Menurut pendapat saya, ini membuat konfigurasi .idea tidak dapat digunakan sebagai konfigurasi bersama. Untuk mengatasi ini, pengembang benar-benar harus mematikan instance IDE mereka, menarik repo, dan membuka kembali IDE mereka. Tidak masuk akal untuk menyimpan konfigurasi bersama jika IDE langsung menimpanya dengan konfigurasi yang saat ini ada di memori. Itu'

Saya telah melakukan jenis konfigurasi IDE bersama di VC sebelumnya dengan Visual Studio dan Netbeans dan selalu baik-baik saja; tetapi dengan .idea rasanya tidak dapat digunakan yang mengecewakan. Saya berharap JetBrains akan mengatasinya dan menjadikannya pengalaman pengguna yang lebih baik.

Jesse Greathouse
sumber
> alih-alih mengubah konfigurasi IDE mereka, atau bahkan memberi mereka pilihan, itu akan secara otomatis menimpa konfigurasi .idea dengan konfigurasi dalam memori saat ini dari IDE mereka. Wow, sangat disayangkan. Senang mendengarnya!
Greg Harga