Haruskah saya menyimpan file proyek seperti .proyek Eclipse, .classpath, .settings, di bawah kontrol versi (misalnya Subversion, GitHub, CVS, Mercurial, dll)?
Jawaban:
Anda ingin tetap mengontrol versi file pengaturan portabel apa pun ,
artinya:
File apa pun yang tidak memiliki jalur absolut di dalamnya.
Itu termasuk:
Aturan praktis bagi saya:
Anda harus dapat memuat proyek ke dalam ruang kerja dan memiliki semua yang Anda butuhkan di dalamnya untuk mengaturnya dengan benar di IDE Anda dan memulai dalam beberapa menit.
Tidak ada dokumentasi tambahan, halaman wiki untuk dibaca atau apa yang tidak.
Muat, siapkan, pergi.
file .project dan .classpath ya. Namun kami tidak menyimpan pengaturan IDE kami dalam kontrol versi. Ada beberapa plugin yang tidak melakukan pekerjaan dengan baik untuk pengaturan yang ada dan kami menemukan bahwa beberapa pengaturan tidak terlalu portabel dari satu mesin dev ke mesin berikutnya. Jadi, kami memiliki halaman Wiki yang menyoroti langkah-langkah yang diperlukan pengembang untuk menyiapkan IDE mereka.
Ini adalah apa yang saya anggap sebagai file yang dihasilkan, dan karena itu saya tidak pernah menempatkannya di bawah kontrol versi. Mereka dapat berbeda dari mesin ke mesin dan pengembang ke pengembang, misalnya ketika orang memasang plugin Eclipse yang berbeda.
Sebagai gantinya, saya menggunakan alat build (Maven) yang dapat menghasilkan versi awal dari file ini saat Anda melakukan pembayaran baru.
Saya bingung antara dua opsi di sini.
Di satu sisi, saya pikir setiap orang harus bebas menggunakan seperangkat alat pengembangan yang paling produktif dengan mereka, selama semua artefak sumber disimpan dalam kontrol versi, dan skrip build (katakanlah ANT atau Maven) memastikan kepatuhan standar oleh menentukan secara tepat JDK mana yang akan digunakan, versi library pihak ketiga mana yang akan bergantung, menjalankan pemeriksaan gaya (misalnya, checkstyle) dan menjalankan pengujian unit, dll.
Di sisi lain, saya pikir begitu banyak orang menggunakan alat yang sama (mis. Eclipse) dan seringkali jauh lebih baik untuk memiliki beberapa hal yang distandarisasi pada waktu desain daripada waktu pembuatan - misalnya Checkstyle jauh lebih berguna sebagai plugin Eclipse daripada sebagai tugas ANT atau Maven - lebih baik melakukan standarisasi pada set alat pengembangan dan seperangkat plugin umum.
Saya mengerjakan proyek di mana setiap orang menggunakan JDK yang sama persis, versi Maven yang sama, versi Eclipse yang sama, kumpulan plugin Eclipse yang sama dan file konfigurasi yang sama (misalnya profil Checkstyle, aturan pemformat kode, dll.). Semua ini disimpan dalam kontrol sumber - .project, .classpath, dan semua yang ada di folder .settings. Itu membuat hidup sangat mudah selama fase awal proyek ketika orang-orang terus menyesuaikan dependensi atau proses build. Ini juga sangat membantu ketika menambahkan permulaan baru ke proyek.
Secara seimbang, menurut saya jika tidak ada terlalu banyak peluang untuk perang agama, Anda harus menstandarkan set dasar alat pengembangan dan plugin dan memastikan kepatuhan versi dalam skrip build Anda (misalnya dengan secara eksplisit menentukan versi Java). Jangan berpikir bahwa menyimpan JDK dan penginstalan Eclipse dalam kontrol sumber memiliki banyak manfaat. Segala sesuatu yang lain yang bukan artefak turunan - termasuk file proyek, konfigurasi dan preferensi plugin Anda (terutama pemformat kode dan aturan gaya) - harus masuk ke kontrol sumber.
PS Jika Anda menggunakan Maven, ada argumen untuk mengatakan bahwa file .project dan .classpath adalah artefak turunan. Ini hanya berlaku jika Anda membuatnya setiap kali Anda melakukan build, dan jika Anda tidak pernah harus mengubahnya secara manual (atau secara tidak sengaja mengubahnya dengan mengubah beberapa preferensi) setelah membuatnya dari POM
Tidak, karena saya hanya file kontrol versi yang diperlukan untuk membangun perangkat lunak. Selain itu, pengembang individu mungkin memiliki pengaturan khusus proyek mereka sendiri.
Tidak, saya adalah pengguna berat Maven dan menggunakan plugin Q for Eclipse yang membuat dan terus memperbarui .project dan .classpath. Untuk hal-hal lain seperti pengaturan plugin, saya biasanya menyimpan halaman README atau Wiki tentang itu.
Juga mereka yang pernah bekerja dengan saya yang lebih memilih IDE lain, cukup gunakan Maven-plugins untuk menghasilkan file yang dibutuhkan agar IDE mereka (dan diri mereka sendiri) tetap menyenangkan.
Ini semua pendapat, saya kira - tetapi praktik terbaik selama bertahun-tahun menunjukkan bahwa file khusus untuk IDE tertentu tidak boleh disimpan dalam kontrol sumber, kecuali seluruh organisasi Anda distandarisasi pada satu IDE dan Anda tidak pernah berniat untuk beralih.
Apa pun itu, Anda pasti tidak ingin pengaturan pengguna disimpan - dan .project dapat berisi pengaturan yang benar-benar khusus pengembang.
Saya merekomendasikan menggunakan sesuatu seperti Maven atau Ant sebagai sistem build standar. Setiap pengembang bisa mendapatkan classpath yang dikonfigurasi dalam IDE mereka dalam beberapa detik.
Meskipun saya biasanya setuju dengan pendekatan "jangan versi file yang dihasilkan", kami memiliki masalah dengan itu dan harus beralih kembali.
Catatan: Saya juga tertarik dengan jawaban VonC , terutama tentang poin "dapatkan Eclipse dalam beberapa menit". Tapi itu tidak menentukan bagi kami.
Konteks kami adalah Eclipse + Maven, menggunakan plug-in m2eclipse. Kami memiliki lingkungan pengembangan yang sama, dengan direktori yang sama sebanyak mungkin. Namun terkadang seseorang mencoba plugin, atau mengubah hal-hal kecil dalam konfigurasi, atau mengimpor ruang kerja kedua untuk cabang yang berbeda ...
Masalah kita adalah pembuatan .project dilakukan saat mengimpor proyek di Eclipse, tetapi tidak diperbarui dalam semua kasus nanti . Ini menyedihkan, dan mungkin tidak permanen karena plug-in m2eclipse akan meningkat, tetapi itu benar sekarang. Jadi kami akhirnya memiliki konfigurasi yang berbeda. Apa yang kami miliki hari ini adalah: beberapa sifat ditambahkan ke banyak proyek pada beberapa mesin, yang kemudian berperilaku jauh berbeda :-(
Satu-satunya solusi yang kami lihat adalah versi file .project (untuk menghindari risiko, kami akan melakukan hal yang sama untuk .classpath dan .settings). Dengan begitu, ketika satu pengembang mengubah pomnya, file lokal diperbarui menggunakan m2eclipse, semuanya terikat bersama, dan pengembang lain akan melihat semua perubahan.
Catatan: dalam kasus kami, kami menggunakan nama file relatif, jadi kami tidak memiliki masalah untuk membagikan file tersebut.
Jadi, untuk menjawab pertanyaan Anda, saya katakan ya, lakukan file-file itu.
Saya juga menyukai:
Sepertinya file proyek ini dapat berubah seiring waktu saat Anda mengerjakan proyek jadi ya, saya menempatkannya di bawah kontrol versi.
Kami menggunakan IntelliJ IDEA, dan menyimpan versi '.sample' dari file proyek (.ipr) dan modul (.iml) di bawah kontrol versi.
Hal yang lebih besar di sini adalah berbagi dan menggunakan kembali daripada membuat versi, IMHO. Tetapi jika Anda akan membagikan konfigurasi ini, tempat apa yang lebih baik untuk meletakkannya selain repositori, tepat di sebelah yang lainnya.
Beberapa keuntungan dari file proyek bersama & berversi:
Perhatikan bahwa di IDEA file ini berisi konfigurasi seperti: apa yang dimaksud dengan dirs "source" dan "test source"; segala sesuatu tentang dependensi eksternal (di mana letak library jars, serta sumber terkait atau javadocs); opsi build, dll. Ini adalah hal-hal yang tidak berbeda dari pengembang ke pengembang (saya tidak setuju dengan ini ). IDEA menyimpan lebih banyak pengaturan IDE pribadi di tempat lain, serta konfigurasi plugin apa pun. (Saya tidak begitu mengenal Eclipse; ini mungkin atau mungkin tidak terlalu berbeda.)
Saya setuju dengan jawaban ini yang mengatakan:
Anda harus dapat memuat proyek ke dalam ruang kerja dan memiliki semua yang Anda butuhkan untuk menyiapkannya dengan benar di IDE Anda dan memulai dalam beberapa menit. [...] Muat, atur, pergi.
Dan kami memilikinya seperti ini, berkat file proyek berversi.