Saya ingin menambahkan proyek yang dalam hal ini dibuat di Netbeans tetapi pertanyaan ini umum untuk sebagian besar IDE. Sederhana saja, apa yang harus saya sertakan dalam repositori saya. Misalnya Netbeans membuat folder nbproject, gerhana membuat folder .settings dll. Harus saya sertakan ini dalam repositori saya, apa keuntungan / kerugian termasuk atau tidak termasuk pengaturan spesifik proyek.
Dalam hal ini adalah proyek pribadi jadi saya tidak membayangkan bahwa orang lain akan mulai mengerjakannya, tetapi akan menyenangkan untuk menambahkan minimum pengaturan proyek sehingga proyek itu sendiri akan mudah untuk mulai bekerja pada mesin yang berbeda.
programming-practices
git
project
maintainability
Daniel Figueroa
sumber
sumber
Jawaban:
Itu benar-benar tergantung pada data apa itu dan harus diputuskan berdasarkan kasus per kasus, bahkan mungkin untuk file individual. Lihatlah isi dari file-file itu. Lebih sering Anda tidak tahu apa artinya. Hal-hal seperti posisi dan ukuran windows IDE adalah sesuatu yang tidak Anda inginkan dalam kontrol sumber.
Tetapi beberapa file proyek IDE adalah metadata proyek vital. Saya tidak mengenal Netbeans dengan baik, tetapi untuk eclipse, file .project memberitahu IDE apa nama proyek itu, bahwa itu adalah proyek web Java, dll. Dan file .classpath berisi informasi tentang folder sumber dan perpustakaan. Beberapa file dalam direktori .settings dapat sama pentingnya, misalnya org.eclipse.core.resources.prefs berisi informasi tentang pengkodean apa yang harus digunakan untuk file mana.
Sebagai metadata proyek, hal ini sangat layak untuk diversi dalam kontrol sumber.
Beberapa IDE dapat mengimpor metadata proyek dari IDE lain. Akan lebih baik untuk memilikinya dalam bentuk yang tidak terikat pada IDE tertentu.
Untuk Jawa, ada yang namanya: Maven . Itu memaksakan konvensi yang kuat pada struktur proyek dan memungkinkan Anda untuk menentukan metadata proyek (seperti dependensi perpustakaan) di satu titik (file bernama pom.xml yang ada di direktori utama proyek dan, tentu saja, dalam kontrol sumber). Ada plugin yang kemudian membuat file proyek IDE dari konfigurasi Maven, dan lainnya yang dapat mengotomatiskan proses pembangunan proyek, atau melakukan apa saja. Terkadang rasanya seperti membuat hal-hal yang tidak perlu menjadi rumit dan butuh waktu untuk belajar, tetapi manfaatnya pada umumnya sepadan.
sumber
Ini sangat tergantung pada jenis informasi apa yang ingin Anda miliki di repositori. Jika Anda ingin semuanya sampai ke file mana yang telah Anda buka dan sedang mengedit pada saat komit, dan Anda satu-satunya yang menggunakan repositori, silakan dan komit semuanya, tetapi ketahuilah bahwa itu mungkin tidak bekerja di komputer lain .
Jika Anda ingin dapat membagikan kode Anda dengan orang lain yang mungkin tidak menggunakan IDE yang sama, maka cukup komit kode itu sendiri tanpa implementasi spesifik proyek.
Jika Anda tahu bahwa semua orang menggunakan IDE yang sama, maka Anda mungkin dapat memasukkan apa pun yang tidak spesifik komputer, yaitu pengaturan file / folder hanya untuk IDE itu sendiri, dengan cara itu mereka sudah dapat memiliki kemampuan untuk mengimpor proyek sebagai IDE mengharapkannya.
sumber
Artefak yang membantu pengembangan Anda dan tidak berguna untuk membangun / melepaskan atau proyek itu sendiri tidak boleh dimasukkan. Repo harus bersih dan rapi dan hanya memiliki hal-hal yang relevan dengan proyek, bukan lingkungan Anda . Repo harus mengetahui kebiasaan Anda. Dan kedua itu akan mengganggu Anda saat melakukan sesuatu yang mirip
git status
... tapi hei saya tidak pernah melakukan perubahan ... ahh abaikan itu.Biarkan saya memberikan contoh yang lebih praktis (saya akan gunakan di
git
sini sebagai alat):Anda tidak akan pernah menginginkan submodul (rekursif) di dalam repo utama Anda untuk memiliki hal-hal spesifik IDE (mungkin juga mengganggu lingkungan proyek utama) karena semua yang Anda pedulikan adalah kode yang ditulis oleh orang lain (atau Anda) dan penggunaan di dalam proyek saat ini. Bukan lingkungan di mana ia dikembangkan. Anda mungkin juga tidak ingin melakukan itu pada orang lain.
Untuk dapat menggunakan pengaturan Anda pada mesin yang berbeda, saya sarankan menggali di dalam IDE Anda dan melihat apa dukungan yang diberikannya untuk hal-hal seperti itu. Emacs memiliki
init
dan server Emacs juga. Atau Anda dapat membuat makro atau skrip kustom (.sh
) yang melakukan pengaturan secara otomatis.sumber
Jika ini adalah proyek pribadi, saya katakan menyimpan pengaturan dalam kontrol sumber. Secara pribadi, tidak ada yang membunuh motivasi saya lebih dari sebuah proyek daripada mendirikan lingkungan pengembangan lagi.
Ketika lebih banyak orang terlibat, saya tidak menempatkan hal-hal ini dalam kendali sumber. Di tim saya, kami memiliki campuran IntelliJ, Sublime Text, dan Eclipse yang digunakan. File IDE hanya menambahkan kekacauan, dan menghasilkan menarik komitmen ke file-file dari orang lain untuk IDE yang tidak Anda gunakan.
Selain itu, proyek Anda seharusnya tidak tergantung pada IDE. Server build tidak akan mem-boot Eclipse untuk mengkompilasi produk Anda, jadi itu seharusnya sudah bebas IDE. Poin yang lebih kecil: menghilangkan organisasi pribadi dalam proyek. Sebagai contoh, di IntelliJ saya suka menggunakan banyak modul dalam proyek kami. Tidak ada orang lain yang menggunakan IntelliJ khawatir tentang ini karena kami tidak menyimpan file .iml (modul).
Jika tim Anda menggunakan IDE yang sama maka itu lebih baik, tetapi kemudian seseorang melakukan entri .classpath yang buruk karena mereka menggunakan jalur absolut. Sekarang semua orang yang menggunakan IDE khawatir tentang hal itu.
Tentu, downside adalah bahwa ada lebih banyak pengaturan ketika seseorang memeriksa proyek. Saya pikir itu sepadan. Kami menggunakan Ivy untuk manajemen dependensi dan memiliki informasi tentang pengaturan, dependensi, dll. Meskipun ini biaya di muka, saya pikir itu layak untuk menjaga pengaturan IDE di luar kendali sumber.
sumber