Apakah strategi penggabungan seperti Git Flow benar-benar anti-pola?

30

Perusahaan saya menggunakan Git, dan menggunakan skema percabangan yang khas - pekerjaan dilakukan secara master, dan cabang dicadangkan untuk rilis. Ini berfungsi dengan baik, selama semua pekerjaan yang dilakukan dalam iterasi membuatnya menjadi cabang, tetapi jika masalah produksi kritis muncul, kita harus memastikan bahwa entah bagaimana pekerjaan membuatnya menjadi dua cabang.

Akhir-akhir ini, kami bersenang-senang dengan cabang-cabang itu. Sudah sakit kepala administratif, memastikan bahwa semua pekerjaan membuatnya menjadi setiap cabang, dan beberapa bug yang telah diperbaiki pada satu cabang tidak membuatnya menjadi master sampai seseorang menunjukkannya, yang menyangkut.

Saya menemukan Git Flow beberapa waktu lalu, dan saya merasa itu akan menjadi solusi untuk masalah kami - kode tidak meresap sampai rilis, atau mundur. Satu-satunya hasil adalah bahwa pimpinan saya menyatakan bahwa pengembangan semacam ini adalah anti-pola - berkembang dengan sangat marah selama dua minggu, kemudian menghabiskan tiga untuk menyelesaikan konflik gabungan.

Saya tidak sepenuhnya yakin saya setuju, dan sejak saya membahasnya, pekerjaan kembali seperti biasa. Baru-baru ini saja kita memiliki beberapa poin nyeri utama dengan ini.

Saya ingin tahu - mengapa skema pengembangan semacam ini dilihat sebagai anti-pola? Apakah ini benar-benar anti-pola?

Makoto
sumber
1
Bagian "Aturan 3" dari blogpost lama Ted Dziuba mungkin membantu mengilustrasikan bagaimana itu bisa menjadi anti-pola.
Isxek
5
IMO, semakin banyak waktu yang sebenarnya Anda habiskan untuk memikirkan kontrol versi, semakin banyak yang salah dengan seluruh pengguna -> fenomena alat di tempat pertama.
Erik Reppen
@ErikReppen: Saya ingin mengalihkan pikiran semua orang dari kontrol versi dan memiliki proses yang dapat digunakan semua orang. Dengan cara ini, kita tidak perlu khawatir tentang hal-hal seperti apakah ini anti-pola atau tidak.
Makoto
6
@ Makoto Apa pun yang melanggar KISS adalah anti-pola, IMO. Di sinilah pengguna daya VCS cenderung membuat saya gila.
Erik Reppen
6
Istilah "antipattern" adalah sejenis "praktik terbaik", dalam arti sering berfungsi sebagai alasan bagi orang untuk mematikan otak mereka. Jangan terima gagasan ini jika pemimpin tidak bisa memberi tahu Anda dengan jelas pengalaman apa yang dia miliki dan mengapa itu buruk.
Kyralessa

Jawaban:

30

Dia sebagian besar mengacu pada sisi cabang fitur model. Cabang fitur dideklarasikan sebagai anti-pola sejak lama ketika cabang-cabang tersebut bertahan selama berbulan-bulan dan sistem kontrol versi tidak dapat bergabung untuk menyelamatkan nyawanya. Cabang fitur yang bertahan satu atau dua minggu memiliki masalah yang jauh lebih sedikit, terutama jika Anda terus bergabung dari develop ke dalam cabang fitur selama waktu itu. Apa pun yang lebih lama dari itu masih tidak disarankan.

Bahkan jika Anda tidak menggunakan sisi cabang fitur dari aliran git, bagian-bagian lain berguna untuk memastikan Anda mendapatkan gabungan yang bersih dan perubahan Anda disebarkan ke arah yang benar.

Karl Bielefeldt
sumber
3
Pengalaman saya dengan cabang fitur, atau cara kami melakukannya, adalah bahwa ada sakit hati jika mereka dibiarkan hidup lebih dari iterasi. Sebuah aturan yang menyatakan bahwa semua fitur harus digabung ke dalam iterasi sebelum rilis akan menyenangkan, untuk meringankan sakit hati dari penggabungan - dan nak, apakah kita memiliki beberapa sakit hati yang serius di belakang ...
Makoto
6
Pengalaman saya adalah bahwa Anda dapat memiliki barang-barang lokal di sekitar selama Anda tetap digabungkan dengan master baru dan atau berkembang sesuai kebutuhan.
Jan Hudec
2
@JaHudec ... atau sampai Anda memiliki dua hal di sekitar yang saling bertentangan. Anda harus selalu memiliki ikhtisar tentang hal yang sedang dilakukan ...
johannes
5
Melakukan sedikit membaca tentang itu, dan referensi Martin Fowler tampaknya menunjukkan bahwa cabang fitur dilakukan dalam aliran integrasi berkelanjutan dapat bekerja - jika mereka dilakukan dalam gigitan lebih kecil daripada apa yang kebanyakan orang akan mempertimbangkan melakukannya untuk. Jadi, dalam arti tertentu, Anda benar - kurang dari dua minggu sebagai waktu untuk hidup di cabang fitur tampaknya cocok. Saya tidak melihat, bagaimana fitur cabang sendiri adalah anti-pola.
Makoto
3
Kamu benar. Mereka hanya anti-pola ketika mereka hidup terlalu lama tanpa digabung. Kadang-kadang orang masih menentang ide ketika mereka tidak ingat alasan yang mendasarinya.
Karl Bielefeldt
21

Penggabungan adalah hal yang lucu - semakin jarang dilakukan semakin sulit, semakin sulit, semakin banyak orang takut akan hal itu, semakin jarang mereka melakukannya.

Solusi adalah jangan biarkan cabang menyimpang terlalu banyak, atau tidak menggunakan cabang.

Jika orang mengerti ini, Anda mungkin tidak akan memiliki banyak masalah dengan penggabungan, jika tidak - mungkin cabang bukanlah ide yang baik tanpa pendidikan.

maxim1000
sumber
1
Nah, tidak menggunakan cabang adalah non-starter. Masalah utama lainnya adalah bahwa pekerjaan dapat dilakukan di dua tempat berbeda dalam kode yang sama, jadi semoga kita dapat melakukan sesuatu untuk meringankannya juga.
Makoto
12
@ Makoto, cukup sering memisahkan hal-hal dalam kode membuat konflik lebih jarang terjadi. Ini bisa berupa pemisahan fungsionalitas menjadi fungsi / kelas atau lebih tinggi menghindari asumsi tidak berdokumen antar modul. Kemudian perubahan menjadi lebih terlokalisasi.
maxim1000
1
@ maxim1000 Saya setuju. Saya pikir seseorang pernah mengatakan sesuatu seperti "VCS adalah alternatif orang miskin untuk arsitektur modular [dipisahkan]"
8DH
+1 untuk paragraf pertama. Dan ya, tanpa pendidikan seperti gitflow adalah jalan buntu
daitangio