Kami adalah toko ISV kecil dan kami biasanya mengirimkan versi baru produk kami setiap bulan. Kami menggunakan Subversion sebagai repositori kode kami dan Visual Studio 2010 sebagai IDE kami. Saya sadar banyak orang menganjurkan Mercurial dan sistem kontrol sumber terdistribusi lainnya, tetapi pada titik ini saya tidak melihat bagaimana kita bisa mendapat manfaat dari ini, tetapi saya mungkin salah.
Masalah utama kami adalah bagaimana menjaga agar cabang dan trunk utama tetap sinkron.
Inilah cara kami melakukan sesuatu hari ini:
- Lepaskan versi baru (secara otomatis membuat tag di Subversion)
- Terus bekerja di bagasi utama yang akan dirilis bulan depan
Dan siklus berulang setiap bulan dan bekerja dengan sempurna. Masalah muncul ketika rilis layanan yang mendesak perlu dirilis. Kami tidak dapat melepaskannya dari batang utama (2) karena sedang dalam pengembangan berat dan tidak cukup stabil untuk dilepaskan segera.
Dalam hal ini kami melakukan hal berikut:
- Buat cabang dari tag yang kami buat pada langkah (1)
- Perbaikan bug
- Uji dan lepaskan
- Dorong perubahan kembali ke bagasi utama (jika ada)
Masalah terbesar kami adalah menggabungkan keduanya (cabang dengan main). Dalam sebagian besar kasus, kami tidak dapat mengandalkan penggabungan otomatis karena misalnya:
- banyak perubahan telah dilakukan pada trunk utama
- menggabungkan file kompleks (seperti file Visual Studio XML dll.) tidak berfungsi dengan baik
- pengembang / tim lain membuat perubahan yang tidak Anda pahami dan Anda tidak bisa hanya menggabungkannya
Jadi apa yang Anda pikirkan adalah praktik terbaik untuk menyinkronkan kedua versi yang berbeda ini (cabang dan utama). Apa yang kamu kerjakan?