Di mana perbaikan bug dilakukan dalam model git-flow?

14

Dalam, perbaikan terbaru model Git-flow masuk di hotfix-*cabang spesifik dan perbaikan integrasi kecil tepat sebelum rilis masuk di release-*cabang. Perbaikan bug umum dari versi sebelumnya tampaknya tidak memiliki tempat.

Di mana mereka harus muncul? Haruskah mereka berada di bug-*cabang mereka sendiri yang bercabang develop(seperti featurecabang)?

Sepatu
sumber
3
Mengapa bug yang tidak penting dalam kode yang dirilis berbeda dari fitur kecil untuk menghasilkan perilaku yang berbeda dari yang dilakukan aplikasi saat ini?
Bart van Ingen Schenau
@ BartartIngenSchenau Apakah Anda merekomendasikan mereka untuk menjadi feature-*cabang? Bisakah perbaikan pada perilaku yang salah dilihat sebagai fitur?
Sepatu
1
@Shoe Saya pikir apa yang dimaksud Bart adalah bahwa Anda harus memperlakukan mereka sebagai fitur, tidak harus menggunakan awalan cabang yang sama .
Darkhogg
3
@Shoe: di git-aliran, setiap cabang kecuali master, develop, release-*atau hotfix-*merupakan cabang fitur, sehingga Anda dapat menggunakan awalan apapun yang Anda suka dan menggunakan prefix yang berbeda untuk bug. Juga, apa perbedaan antara perilaku keliru yang berfungsi seperti yang ditentukan dan perilaku keliru yang menyimpang dari spesifikasi? Dalam kedua kasus itu adalah perilaku yang salah, tetapi hanya yang terakhir adalah bug.
Bart van Ingen Schenau

Jawaban:

9

Jawaban singkatnya: Ya, cabang untuk perbaikan bug yang akan direncanakan untuk rilis mendatang harus di cabang fitur. Cara Anda menamai cabang fitur atau cabang ini untuk perbaikan bug tergantung pada Anda dan standar tim Anda, tetapi mereka harus diperlakukan secara identik jika Anda mengikuti Gitflow.


Komentar Bart van Ingen Schenau memunculkan poin yang bagus.

Gitflow memiliki lima jenis cabang: master,, developcabang hotfix (diawali dengan hotfix-), rilis cabang (diawali dengan release-, dan cabang fitur. masterDan developcabang adalah cabang yang sudah berjalan lama dan Anda tidak melakukan langsung ke dalamnya. release-Cabang-cabang dibuat untuk menggambar garis untuk rilis tertentu dan kemudian mendukung perbaikan bug antara identifikasi versi berikutnya dan rilis. hotfix-Cabang-cabang khusus untuk rilis kritis, di luar siklus ke dalam produksi. feature-Cabang-cabang adalah untuk pengembangan fitur individu untuk beberapa rilis mendatang.

Datang dari lingkungan di mana PR digunakan dan selain dari pengembang individu berkomitmen untuk cabang fitur, tidak ada yang harus dilakukan langsung ke master, developatau cabang rilis. Ini memastikan bahwa setiap perubahan ditinjau kode, bersama dengan memastikan cakupan tes yang sesuai dan lulus tes dalam lingkungan CI sebelum perubahan masuk. Saya akan menentang setiap komitmen langsung ke salah satu cabang ini, meskipun tampaknya Gitflow dengan sendirinya tidak t memiliki masalah dengan melakukan perbaikan bug pra-rilis atau mengubah langsung ke cabang rilis dan kemudian menariknya ke dalam pengembangan dan kemudian fitur cabang.

Dalam kasus khusus Anda, release-cabang bukan tempat yang tepat. Perangkat lunak ini telah dirilis dan di master. Setelah rilis digabungkan menjadi master dan ditandai di sana, cabang rilis untuk rilis tertentu telah melampaui tujuannya dan tidak perlu ada lagi. Jika Anda aktif membersihkan cabang-cabang Anda (yang saya pikir seharusnya semua orang), maka ini bahkan bukan pilihan.

Jika perbaikan Anda tidak kritis, maka cabang perbaikan terbaru sepertinya tidak cocok. Tujuan dari cabang perbaikan terbaru adalah untuk membiarkan seseorang mendapatkan perubahan kritis ke dalam produksi dengan sangat cepat tanpa mengganggu pengembangan yang sedang berlangsung. Menggunakan ini harus menjadi pengecualian daripada norma untuk tim pengembangan. Secara umum, perbaikan terbaru yang kritis harus menjadi kasus yang luar biasa.

Satu-satunya yang tersisa adalah cabang fitur. Perhatikan bahwa bagian halaman yang ditautkan dalam pertanyaan tentang cabang fitur bahkan mengatakan bahwa cabang fitur "kadang-kadang disebut cabang topik". Jika perubahan Anda menargetkan rilis yang akan datang dan tidak memenuhi kriteria untuk perbaikan terbaru, itu harus di salah satu cabang ini.

Thomas Owens
sumber
Kami setuju bahwa tidak boleh ada komitmen langsung untuk menguasai, mengembangkan atau melepaskan cabang. Tetapi apa yang seharusnya menjadi aliran PR ketika Anda menemukan bug di cabang rilis dan perlu diperbaiki di keduanya, melepaskan dan mengembangkan cabang. Ini memiliki tantangan sendiri jika seluruh cabang rilis Anda belum siap untuk digabungkan dalam pengembangan tetapi perbaikan bug harus dilakukan di kedua tempat .. Jika Anda mau, saya dapat memposting pertanyaan baru untuk ini.
Sap
@Sap Sebuah pertanyaan baru akan bagus, tetapi jika Anda mempostingnya, tolong jelaskan mengapa perbaikannya sangat penting sehingga perlu digabung menjadi keduanya - yang sepertinya menyiratkan ada masalah kritis yang tidak ditemukan sebelum diperkenalkan develop, bukan ditemukan antara waktu diperkenalkan dan pembuatan cabang rilis, dan / atau cabang rilis Anda ada untuk waktu yang lama. Sederhananya, saya percaya satu-satunya pilihan adalah pick-ceri (saya akan menyarankan fix dan tarik permintaan ke cabang rilis, bergabung ke cabang rilis, dan cherry-pick ke dalam pengembangan melalui permintaan tarik).
Thomas Owens
4

Jika komitnya tunggal maka buat komit yang diidentifikasi dengan baik dan dorong di atas cabang pengembangan, atau buat cabang fitur.

Ada juga komentar dari penulis git-flow yang mengatakan persis apa yang Anda tanyakan: Cabang bugfix tidak ada # 24

Deb
sumber
Terima kasih, tautan yang Anda bagikan membersihkan ini untuk saya.
arcseldon