Saya mencoba memilih alur kerja Git yang paling sesuai untuk produk kami. Berikut adalah parameternya:
- Kami melakukan beberapa rilis besar setahun, misalkan paling banyak 10
- Kami memiliki beberapa versi produk kami yang aktif secara bersamaan (beberapa orang menggunakan v10.1, beberapa menggunakan v11.2, dll.)
- Kita harus dapat mengerjakan beberapa rilis sekaligus (jadi kita bisa mengerjakan v12.1, tetapi ketika kita sampai pada akhir rilis kita mulai mengerjakan v12.2 pada saat yang sama)
- Kita harus dapat memperbaiki rilis saat bug penting ditemukan
Sejauh ini, menurut saya cara ini bisa berhasil:
- Repo jarak jauh tunggal digunakan
- Buat cabang 12.1 dari master
- Buat cabang fitur berdasarkan 12.1, komit dan gabungkan kembali ke 12.1, tekan
- Setelah kami perlu mulai bekerja pada rilis mendatang, buat cabang baru 12.2 berdasarkan 12.1
- Sejak saat itu, ketika mengerjakan fitur untuk 12.1, buat cabang dari 12.1, komit perubahan, dan gabungkan menjadi 12.1 dan 12.2, tekan
- Jika mengerjakan fitur untuk 12.2, buat cabang dari 12.2, komit perubahan, dan gabungkan hanya menjadi 12.2, tekan
- Ketika rilis 12.1 selesai, gabungkan menjadi cabang master dan tag master dengan 12.1
- Jika perbaikan terbaru diperlukan, buat cabang perbaikan terbaru dari cabang rilis terlama yang membutuhkannya, komit perubahan, dan gabungkan kembali ke semua cabang rilis untuk rilis itu dan rilis mendatang yang bisa dipengaruhi; jika cabang rilis stabil terbaru terpengaruh, gabungkan menjadi master.
Saya punya beberapa masalah:
- Saya tidak yakin menggabungkan hotfix dari cabang lama ke cabang baru akan menjadi proses yang lancar, terutama jika ada banyak perubahan yang tumpang tindih; apakah akan lebih pintar untuk hanya perbaikan terbaru secara manual di setiap cabang dalam kasus di mana sepertinya akan ada konflik
- Model alur kerja yang saya lihat tampaknya tidak membuat cabang rilis tetap hidup, setelah selesai rilis akan digabung menjadi master, ditandai, dan dihapus. Masalah saya dengan itu adalah bahwa saya tidak punya ide bagus bagaimana mengelola keadaan rilis jika semua yang saya miliki adalah tag in master, tampaknya lebih mudah untuk memperbaiki hotfix di cabang dan kemudian saya memiliki rilis saya selalu dapat kembali ke yang memiliki perbaikan terbaru (saya bahkan dapat menandai perbaikan terbaru di rilis). Tidak yakin ada cara saya bisa kembali dalam master dan entah bagaimana memiliki salinan rilis dengan perbaikan terbaru yang diterapkan dan memperbarui tag itu.
Komentar dihargai pada hal-hal yang mungkin saya abaikan atau cara yang lebih baik untuk mencapai hal-hal yang diberikan persyaratan yang saya tentukan.