Semua orang di tim kami menggunakan IntelliJ IDEA, dan kami merasa berguna untuk menempatkan file proyeknya (.ipr dan .iml) ke dalam kontrol sumber sehingga kami dapat berbagi konfigurasi, pengaturan, dan inspeksi pembangunan. Plus, kita kemudian dapat menggunakan pengaturan inspeksi tersebut di server integrasi berkesinambungan kami dengan TeamCity. (Kami memiliki file .iws ruang kerja per-pengguna dalam file .gitignore dan tidak dalam kontrol sumber.)
Namun, file-file itu berubah sedikit ketika Anda melakukan apa saja di IDEA. Ada masalah dalam database isu IDEA untuk itu ( IDEA-64312 ), jadi mungkin orang mungkin menganggap ini sebagai bug di IDEA, tetapi itu adalah salah satu yang kita harus hidup dengan untuk masa yang akan datang.
Hingga baru-baru ini, kami menggunakan Subversion, tetapi kami baru-baru ini beralih ke Git. Kami masing-masing baru saja terbiasa dengan daftar perubahan file proyek yang kami abaikan dan tidak check-in kecuali ada perubahan file proyek yang ingin kami bagi dengan orang lain. Tetapi dengan Git, kekuatan sebenarnya tampaknya (dari apa yang kami eksplorasi) percabangan berkelanjutan yang didukungnya, dan beralih di antara cabang-cabang adalah masalah dengan file proyek yang selalu dimodifikasi. Seringkali itu hanya bisa menggabungkan perubahan entah bagaimana, dan mencoba menangani perubahan file proyek sekarang sedang diterapkan ke cabang baru. Namun, jika cabang baru telah mengubah file proyek (seperti cabang sedang bekerja pada modul baru yang belum ada di cabang lain), git hanya melempar kesalahan bahwa itu tidak t masuk akal untuk menggabungkan file ketika kedua cabang memiliki perubahan dan Anda memiliki perubahan secara lokal, dan saya lebih suka mengerti maksudnya. Dari baris perintah, seseorang dapat menggunakan "-f" pada perintah "git checkout" untuk memaksanya membuang perubahan lokal dan menggunakan cabang itu, tetapi (1) perintah Git Checkout GUI di IDEA (10.5.1) sepertinya tidak memiliki itu sebagai opsi yang dapat kita temukan, jadi kita perlu beralih ke baris perintah secara teratur, dan (2) Kami tidak yakin kami ingin terbiasa menggunakannya beri tanda dan beri tahu Git untuk membuang perubahan lokal kami.
Jadi, berikut adalah beberapa pemikiran yang kami miliki tentang opsi yang harus kami tangani dengan ini:
- Keluarkan file proyek sepenuhnya dari kendali sumber. Letakkan mereka di .gitignore, dan bagikan ke setiap orang dan TeamCity melalui beberapa cara lain, mungkin dengan menempatkan mereka dalam kendali sumber di tempat lain atau dengan nama lain. Tim kami cukup kecil sehingga opsi ini layak untuk dipertimbangkan, tetapi sepertinya tidak terlalu bagus.
- Lanjutkan hidup dengannya, berusaha memastikan untuk mengelola file mana yang kami miliki di cabang mana pada waktu tertentu. Sebagai bagian dari ini, kami dapat mendorong setiap pengembang untuk memiliki lebih dari satu salinan dari setiap proyek pada sistem mereka, sehingga mereka dapat memeriksa masing-masing ke cabang yang berbeda dengan set file proyek yang mungkin berbeda.
- Coba saja proyek (.ipr) dalam kontrol sumber, dengan file modul (.iml) tidak dalam kontrol sumber dan dalam file .gitignore. Hal utama yang tampaknya beralih sendiri di .ipr secara teratur adalah urutan konfigurasi build bersama, tapi mungkin kita bisa membagikan informasi secara terpisah tentang cara mengaturnya. Saya tidak begitu yakin bagaimana IDEA menangani hal semacam ini hanya memiliki beberapa file saja, terutama pada checkout baru.
Saya kira saya berharap ada beberapa solusi yang jelas (atau tidak jelas) yang kami lewatkan, mungkin berurusan dengan kemampuan penyesuaian besar yang tampaknya dimiliki Git dan IDEA. Tapi sepertinya kita bukan satu-satunya tim yang mengalami masalah ini. Pertanyaan yang agak mirip pada Stack Overflow termasuk 3495191 , 1000512 , dan 3873872 , tapi saya tidak tahu karena mereka persis masalah yang sama, dan mungkin seseorang dapat datang dengan pro dan kontra untuk berbagai pendekatan yang telah saya diuraikan, pendekatan yang tercantum dalam jawaban atas pertanyaan-pertanyaan itu, atau pendekatan yang mereka rekomendasikan.