Saya pikir artikel ini, A Successing Git Branching Model , sangat terkenal di kalangan pengguna DVCS yang berpengalaman.
Saya menggunakan hg
sebagian besar, tapi saya berpendapat diskusi ini baik untuk DVCS.
Alur kerja kami saat ini adalah setiap pengembang mengkloning master repo. Kami menulis kode pada repo lokal kami sendiri, menjalankan tes, dan jika semuanya berjalan dengan baik mendorong ke master.
Jadi kami ingin mengatur server CI seperti Jenkins dan meningkatkan alur kerja kami dengan sistem penyediaan di masa depan (koki, boneka, boneka, dll.).
Bagian nyata
Nah, model yang disajikan di atas berfungsi dengan baik tetapi cabang dapat merusak CI. Cabang fitur harus disinkronkan dengan sumber (menurut artikel, itu akan menjadi development
cabang) untuk membuat CI dan menggabungkan dengan lancar, bukan?
Say Alice dan Bob sedang mengerjakan dua fitur. Tetapi Alice selesai pada hari berikutnya. Fitur Bob memakan waktu seminggu. Pada saat Bob selesai, perubahannya sudah ketinggalan zaman (mungkin Alice refactored / mengganti nama beberapa kelas).
Salah satu solusinya adalah setiap pagi pengembang harus menarik master/origin
untuk memeriksa apakah ada perubahan. Jika Alice berkomitmen, Bob harus menarik dan menggabungkan ke dalam ruang kerjanya sehingga cabang fitur-fiturnya up-to-date.
- Apakah ini cara yang baik?
- Haruskah cabang-cabang ini ada di master repo (bukan klon lokal?) Berarti haruskah setiap pengembang memiliki hak istimewa untuk master repo pada GitHub / Bitbucket sehingga mereka dapat membuat cabang baru? Atau ini dilakukan secara lokal?
- Terakhir, model yang disajikan oleh artikel harus merusak CI jika cabang tidak disinkronkan dengan
origin/master
. Karena kami ingin melakukan pembangunan malam, haruskah pengembang menarik dan menggabungkan sebelum mereka meninggalkan pekerjaan, dan memiliki CI berjalan pada setiap cabang fitur juga?