Perusahaan kami saat ini menggunakan model percabangan trunk / rilis / hotfix sederhana dan ingin saran tentang model percabangan apa yang paling cocok untuk perusahaan Anda atau proses pengembangan.
Alur kerja / model percabangan
Di bawah ini adalah tiga deskripsi utama dari hal ini yang telah saya lihat, tetapi mereka sebagian bertentangan satu sama lain atau tidak cukup jauh untuk memilah masalah-masalah berikutnya yang telah kita hadapi (seperti dijelaskan di bawah). Jadi tim kami sejauh ini default untuk solusi yang tidak terlalu bagus. Apakah Anda melakukan sesuatu yang lebih baik?
Penggabungan vs rebasing (kusut vs riwayat berurutan)
Haruskah seseorang
pull --rebase
atau menunggu dengan bergabung kembali ke garis utama sampai tugas Anda selesai? Secara pribadi saya condong ke arah penggabungan karena ini mempertahankan ilustrasi visual yang menjadi dasar tugas dimulai dan diselesaikan, dan saya bahkan lebih sukamerge --no-ff
untuk tujuan ini. Namun memiliki kelemahan lain. Juga banyak yang belum menyadari properti berguna dari penggabungan - bahwa itu tidak komutatif (menggabungkan cabang topik menjadi master tidak berarti menggabungkan master ke cabang topik).Saya mencari alur kerja alami
Terkadang kesalahan terjadi karena prosedur kami tidak menangkap situasi tertentu dengan aturan sederhana. Sebagai contoh, perbaikan yang diperlukan untuk rilis sebelumnya tentu saja harus didasarkan pada downstream yang cukup untuk memungkinkan penggabungan upstream ke semua cabang yang diperlukan (apakah penggunaan istilah-istilah ini cukup jelas?). Namun kebetulan bahwa perbaikan membuatnya menjadi master sebelum pengembang menyadari itu harus ditempatkan lebih jauh ke hilir, dan jika itu sudah didorong (bahkan lebih buruk, digabung atau sesuatu berdasarkan itu) maka opsi yang tersisa adalah memetik ceri, dengan bahaya yang terkait. Aturan sederhana seperti apa yang Anda gunakan?Juga dalam hal ini termasuk kejanggalan dari satu cabang topik tidak termasuk cabang topik lainnya (dengan asumsi mereka bercabang dari baseline umum). Pengembang tidak ingin menyelesaikan fitur untuk memulai dengan perasaan lain seperti kode yang baru saja mereka tulis sudah tidak ada lagi
Bagaimana cara menghindari membuat konflik gabungan (karena cherry-pick)?
Apa yang tampak seperti cara pasti untuk menciptakan konflik penggabungan adalah dengan memetik antar cabang, mereka tidak akan pernah bisa digabungkan lagi? Apakah menerapkan komit yang sama dalam pengembalian (bagaimana melakukan ini?) Di cabang mana pun mungkin menyelesaikan situasi ini? Ini adalah salah satu alasan saya tidak berani mendorong alur kerja berbasis penggabungan.
Bagaimana cara membusuk menjadi cabang topikal?
Kami menyadari bahwa akan luar biasa untuk mengumpulkan integrasi selesai dari cabang topik, tetapi sering kali kerja oleh pengembang kami tidak didefinisikan dengan jelas (kadang-kadang sesederhana "mencari-cari") dan jika beberapa kode sudah masuk ke topik "misc", tidak bisa dibawa keluar dari sana lagi, sesuai pertanyaan di atas? Bagaimana Anda bekerja dengan mendefinisikan / menyetujui / lulus / melepaskan cabang topik Anda?
Prosedur yang tepat seperti tinjauan kode dan kelulusan tentu saja akan menyenangkan.
Tetapi kita tidak bisa menjaga hal-hal yang tidak terurai cukup untuk mengelola ini - ada saran? cabang integrasi, ilustrasi?
Di bawah ini adalah daftar pertanyaan terkait:
- Apa sajakah strategi bagus untuk memungkinkan aplikasi yang dikerahkan menjadi hotfixable?
- Deskripsi alur kerja untuk penggunaan Git untuk pengembangan in-house
- Alur kerja Git untuk pengembangan kernel Linux perusahaan
- Bagaimana Anda mempertahankan kode pengembangan dan kode produksi? (terima kasih untuk PDF ini !)
- manajemen rilis git
- Git Cherry-pick vs Merge Workflow
- Bagaimana cara memilih banyak komitmen
- Bagaimana Anda menggabungkan file selektif dengan git-merge?
- Bagaimana cara memilih berbagai komitmen dan bergabung ke cabang lain
- ReinH Git Workflow
- git workflow untuk membuat modifikasi Anda tidak akan pernah mendorong kembali ke asal
- Cherry-pilih gabungan
- Alur kerja Git yang tepat untuk OS gabungan dan kode pribadi?
- Memelihara Proyek dengan Git
- Mengapa Git tidak dapat menggabungkan perubahan file dengan induk / master yang dimodifikasi.
- Git bercabang / rebasing praktik yang baik
- Kapan "git pull --rebase" akan membuat saya bermasalah?
- Bagaimana DVCS digunakan dalam tim besar?
Periksa juga apa yang ditulis oleh SCM Plastik tentang pengembangan berbasis tugas , dan jika Plastik bukan pilihan Anda, pelajari model percabangan nvie dan skrip pendukungnya .