Dalam proyek web yang dikembangkan secara terus-menerus (bukan produk) saat ini kami memiliki strategi percabangan berikut, secara kasar didasarkan pada aliran git :
- mengembangkan cabang: versi kerja terbaru
- cabang utama: versi yang akan dirilis / dirilis versi
- cabang fitur: fitur dalam pengembangan
- cabang hotfix: perbaikan bug mendesak dalam versi yang dirilis
Master hanya baca, diperbarui melalui permintaan tarik dari cabang berkembang atau perbaikan terbaru . Setiap pembaruan menghasilkan kandidat rilis yang sedang dibangun dan digunakan untuk sistem pementasan. Kandidat rilis disebarkan ke produksi setelah persetujuan manual.
Cabang fitur dibuat berdasarkan pengembangan , atau dari komit terakhir yang telah digabungkan menjadi master. Permintaan tarikan dari cabang fitur untuk dikembangkan dibangun, disebarkan ke sistem pengujian gratis tempat pengujian integrasi dan tes penerimaan (otomatis & manual) dijalankan. Ketika berhasil diuji dan ditinjau, PR akan digabung, sehingga akan menjadi bagian dari rilis berikutnya (yaitu menggabungkan dari pengembangan menjadi master).
Tujuanku
Saya ingin menyederhanakan ini dan menyingkirkan cabang pengembangan. Cabang pengembangan memiliki sebagian besar alasan historis dan karena selalu versi yang berhasil diuji, saya pikir tidak perlu memisahkannya dari master. Menghapusnya juga akan menyederhanakan proses rilis karena tidak ada penggabungan tambahan lagi.
Saya memiliki batasan berikut:
- rilis dijadwalkan dan tidak sepenuhnya otomatis
- sementara cabang fitur biasanya berumur pendek, beberapa tetap tidak mengalami perubahan selama beberapa minggu (misalnya desain ulang) tetapi perlu diuji juga (saat ini sebagai permintaan tarikan terbuka untuk dikembangkan)
- terkadang satu fitur harus dirilis di luar rilis reguler, secara efektif mengubahnya menjadi perbaikan terbaru. Dengan strategi saat ini saya bisa rebase cabang fitur dan menggabungkannya langsung menjadi master
- itu juga terjadi bahwa kita perlu menahan fitur setelah pengujian penerimaan dengan sistem eksternal pada staging gagal
Di mana saya tidak yakin tentang transisi:
- Saat ini saya sedang membangun permintaan tarikan untuk pengujian dan menggabungkan komitmen untuk rilis. Bisakah saya menyatukan ini?
- bagaimana menangani perbaikan terbaru saat master ada di depan rilis terbaru. Haruskah saya membuat dan menggunakan rilis langsung dari cabang hotfix?
- Adakah cara yang masuk akal untuk menangani fitur yang harus dikeluarkan dari rilis setelah mereka digabung? Apakah cabang pengembangan terpisah benar-benar menguntungkan untuk kasus ini? Sebagian besar waktu saya akhirnya mengembalikan dan kembali melakukan komitmen secara manual.