Bagaimana seseorang dapat menggunakan git-flow secara efektif pada proyek di mana lebih dari satu versi utama dipertahankan?

18

Saya telah memigrasikan beberapa proyek saya ke alur kerja aliran git , dan saya menyukainya. Namun, saya belum menemukan praktik terbaik yang membuat segala sesuatunya berjalan dengan lancar ketika bekerja dengan sebuah proyek di mana lebih dari satu versi utama dipertahankan pada satu waktu.

Khususnya, saya tidak mempertahankan "versi gratis" dan "versi berbayar" atau model paralel lainnya, saya sedang berbicara tentang proyek di mana Versi 1 dirilis, dan tetap didukung dengan versi kecil (1.1, 1.2, dll. .) sampai Versi 3 telah dirilis, di mana poin 2 dan 3 akan dipertahankan, sampai 4 dirilis ... Anda mendapatkan idenya.

Bagaimana Anda, atau akankah Anda, mempertahankan dua atau lebih versi proyek yang didukung sekaligus dalam alur kerja gitflow?

HedgeMage
sumber
Tidak punya contoh atm, tapi proyek yang saya tahu menggunakan repositori terpisah untuk berbagai versi utama, dan patch backport dari satu ke yang lain.
ProdigySim
@ProdigySim: Terima kasih atas titik datanya, tetapi apakah hanya saya atau akankah itu menambah sejumlah overhead untuk dilacak dan dikelola?
HedgeMage
@ProdigySim Saya menduga bahwa proyek-proyek itu tidak menggunakan alat dengan kapabilitas percabangan dan penggabungan git.
Rein Henrichs
@Rein Mereka menggunakan Mercurial. Saya tidak berpikir percabangan akan sangat bersih dalam hal pelacakan paralel-versi utama perangkat lunak.
ProdigySim
Kemudian kecurigaan saya benar. Dan ya, cukup bersih jika alat Anda mendukungnya dengan benar. git dan kernel Linux melakukannya dengan cara ini.
Rein Henrichs

Jawaban:

10

man gitworkflows, kakek dari alur kerja 'aliran git', menjelaskan pedoman alur kerja umum git; penggunaan pu, next, masterdan maintcabang; dan bagaimana maintdikelola. Jika Anda memiliki beberapa cabang pemeliharaan, Anda dapat menamainya, misalnya maint/1.x, maint/2.xdan sebagainya.

Kuncinya bukanlah bagaimana menggunakan perintah git, tetapi bagaimana membangun proses yang masuk akal. Putuskan hal-hal apa yang penting bagi Anda (kemudahan backporting?) Dan buat (dan dokumentasikan) alur kerja yang memenuhi kendala-kendala tersebut.

Rein Henrichs
sumber
Tetapi apakah ini menjawab pertanyaan? Yaitu, apakah git-flow mendukung model rilis fleksibel seperti yang dijelaskan dalam pertanyaan, atau apakah seseorang kembali ke perintah git dasar? ("alur kerja git" menggambarkan penggunaan alur kerja dasar git, aliran pra-git.) Aliran git dibuat (seolah-olah) untuk menyederhanakan proses git merge / branch, sehingga tim (dengan berbagai tingkat kecakapan git-fu) dapat fokus pada pengkodean dan menghindari kesalahan "kesalahan merger" yang menghabiskan waktu. Apakah mungkin w / git-flow untuk mempertahankan dan mengembangkan v1.2. {1,2,3, ..} pada saat yang sama dengan v2.5. {1,2,3, ...}? Mungkin dengan cabang rilis jangka panjang? Atau master1, master2, ...?
michael
0

Pada dasarnya, Anda akan menduplikasi master, releasedan developcabang-cabang untuk setiap versi utama Anda mempertahankan. Bagaimana mereka berinteraksi satu sama lain tetap sama. Untuk featurecabang, hanya pastikan untuk cabang dari cabang tertua Anda berniat untuk menggabungkan kembali ke , yang mencegah menarik di dependensi yang tidak diinginkan. Kemudian ketika Anda menggabungkan featurecabang Anda kembali, Anda hanya melakukan penggabungan tambahan ke setiap cabang versi utama baru yang sesuai.

Karl Bielefeldt
sumber
1
Bukankah seluruh poin master mencakup setiap versi yang dirilis?
HedgeMage
@HedgeMage, dalam siklus rilis yang lebih linier itulah masalahnya, tapi itu sangat tidak praktis untuk versi utama paralel.
Karl Bielefeldt
Ini sepertinya solusi yang paling praktis, kecuali ada trik yang mencoba-dan-benar menggunakan perbaikan terbaru atau yang tidak saya sadari. Saya telah mencari cara untuk memperkenalkan git-flow dan masih dapat (sebagai prasyarat yang disayangkan) menjaga model rilis kami yang ada, di mana kami harus memelihara / mengembangkan rilis yang lebih lama (bukan hanya hotfix). Jadi v5.1.x akan bertahan (dengan fitur baru ditambahkan, bug diperbaiki, dll) beberapa tahun setelah v6.1.x dirilis. Sekitar 2-3 versi utama didukung dan dikembangkan pada waktu tertentu. Tetapi perbaikan bug perlu diterapkan ke setiap versi di mana bug itu ada.
michael