Jika kita hanya bekerja dengan satu cabang di Subversion, haruskah kita repot-repot? Tidak bisakah kita bekerja di bagasi untuk mempercepat?
Inilah cara kami berkembang dengan Subversion:
- Ada belalai
- Kami membuat cabang pengembangan baru
- Kami mengembangkan fitur baru di cabang itu
- Ketika fitur selesai, itu digabung dalam bagasi, cabang dihapus dan cabang pengembangan baru dibuat dari bagasi
Ketika kami ingin merilis untuk produksi, kami membuat tag dari bagasi. Perbaikan bug dilakukan pada cabang dari tag itu. Perbaikan bug ini kemudian digabungkan dalam bagasi.
Inilah sebabnya kami membuat cabang pengembangan baru setelah fitur selesai. Dengan cara ini, perbaikan bug segera dimasukkan dalam kode baru kami.
Di bawah ini adalah diagram yang harus menjelaskan:
Sekarang, ada perasaan bahwa ini bukan cara kerja yang paling efisien. Kami membangun secara lokal sebelum berkomitmen, yang membutuhkan waktu sekitar 5-10 menit. Anda dapat memahami bahwa ini dialami sebagai waktu tunggu yang cukup lama.
Gagasan cabang pengembangan adalah bahwa trunk selalu siap-lepas. Tapi ini tidak benar dalam situasi kita lagi. Kadang-kadang, sebuah fitur hampir siap, dan beberapa pengembang sudah mulai mengkodekan fitur berikutnya (jika tidak, mereka akan duduk menunggu satu atau dua pengembang untuk menyelesaikan dan menggabungkan).
Kemudian, ketika fitur 1 selesai, ia digabungkan ke dalam bagasi, tetapi dengan beberapa komitmen fitur 2 disertakan.
Jadi, haruskah kita repot-repot dengan cabang pengembangan, karena kita hanya punya satu cabang? Saya telah membaca tentang pengembangan berbasis trunk dan abstraksi cabang, tetapi sebagian besar artikel yang saya temukan fokus pada bagian abstraksi cabang. Saya mendapatkan kesan bahwa itu untuk perubahan besar yang akan berlangsung selama beberapa rilis. Ini bukan masalah yang kita alami.
Bagaimana menurut anda? Bisakah kita bekerja di bagasi? Skenario terburuk adalah (saya pikir) bahwa kita harus membuat tag dari bagasi dan memilih-ceri komit yang kita butuhkan, karena beberapa komit / fitur belum siap produksi.
Jawaban:
IMHO bekerja langsung pada trunk baik-baik saja jika Anda dapat melakukan sedikit demi sedikit dan Anda memiliki integrasi berkesinambungan di tempat, sehingga Anda dapat memastikan (sampai batas tertentu) bahwa komitmen Anda tidak merusak fungsi yang ada. Kami melakukannya juga di proyek kami saat ini (pada kenyataannya saya belum bekerja di proyek apa pun menggunakan cabang spesifik tugas secara default).
Kami hanya membuat cabang sebelum rilis, atau jika fitur membutuhkan waktu lama untuk diimplementasikan (yaitu merentang beberapa iterasi / rilis). Ukuran tugas yang kasar hampir selalu dapat diperkirakan dengan cukup baik sehingga kita tahu sebelumnya apakah kita membutuhkan cabang yang terpisah untuk itu. Kami juga tahu berapa banyak waktu yang tersisa sebelum rilis berikutnya (kami menerbitkan rilis kira-kira setiap 2 bulan) sehingga mudah untuk melihat apakah suatu tugas cocok dengan waktu yang tersedia sebelum rilis berikutnya. Jika ragu, kami menundanya sampai cabang rilis dibuat, maka tidak apa-apa untuk mulai mengerjakannya di bagasi. Sejauh ini kami hanya perlu membuat cabang khusus tugas sekali (sekitar 3 tahun). Tentu saja proyek Anda mungkin berbeda.
sumber
Apa yang Anda gambarkan dengan pengembangan fitur Anda adalah pengembangan paralel (pengembangan simultan menargetkan rilis produk yang berbeda) dan memang memerlukan cabang untuk menanganinya dengan benar. Anda bisa memiliki satu cabang baik untuk setiap rilis atau untuk setiap fitur jika Anda sering harus mengomposisi ulang fitur yang akan membuat rilis tertentu.
Cara lain untuk melakukan ini, adalah dengan bekerja di luar dari trunk secara default tetapi membuat cabang jika Anda mengharapkan tugas Anda untuk melampaui melewati rilis berikutnya. Anda selalu menandai rilisnya saja.
Pendekatan mana yang Anda lakukan benar-benar tergantung pada seberapa banyak manajemen yang dapat Anda lakukan di muka. Jika rilis khas tidak benar-benar memiliki pengembangan paralel maka saya akan mengambil pendekatan kedua.
sumber