Jon Purdy memiliki ide yang tepat. git flowmembuat pengelolaan cabang-cabang ini menjadi mudah, juga, dan manajemen cabang merupakan argumen untuk pindah ke git.
Mari kita mulai dengan ikhtisar dasar git, karena Anda datang dari perspektif- svnke- git. Pertimbangkan githal-hal berikut:
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
Di atas, Anda bercabang masterke develop(dilambangkan dengan \), dan bercabang developke featurecabang. Kami menggabungkan cabang-cabang itu cadangan (dilambangkan dengan /), dengan komit ( -) di sepanjang cabang. (Jika tidak ada komit tetapi gabungannya adalah jalan ke kanan, ada .indikator untuk menunjukkan bahwa -komit berikutnya adalah komit berikutnya).
Cukup mudah. Bagaimana jika kami memiliki perbaikan terbaru di rilis utama kami?
master--...............-.....-................-...........-.........-
\ / / / \ /| /
\ / / / -hotfix-- V /
---develop---------............../..............-...----
\ / \ V /
--feature--- --feature2...----
Di atas, developbercabang dari master. Bug yang ditemukan di masterdiperbaiki dengan bercabang dari master, memperbaikinya, dan menggabungkan kembali ke master. Kami kemudian bergabung masterke dalam develop, dan kemudian developkefeature2 , yang menggulung kode baru dari hotfixcabang-cabang ini.
Saat Anda bergabung feature2kembali ke develop, riwayatnya termasuk developdengan hotfix. Demikian juga, developdigabung feature2dengan kode baru dari master, jadi penggabungan developkembali masterakan terjadi tanpa hambatan, karena didasarkan pada komit pada mastersaat itu — seolah-olah Anda telah bercabang masterpada saat itu.
Jadi, inilah cara lain untuk melakukan itu.
master--..........-........-
\ /\ /
---1.0-- --1.1--
Anda 1.0 rilis mendapatkan tagged- 1.0.1, 1.0.2, 1.0.3, dan sebagainya.
Sekarang inilah triknya: Anda menemukan bug di 1.0 dan itu mempengaruhi 1.1, 1.2, dan 1.3. Apa yang kamu kerjakan?
Anda bercabang rilis rilis terbaru atau paling awal dipertahankan dan memperbaikinya. Kemudian Anda menggabungkan baru Anda hotfixcabang ke 1.3-dan dalam 1.2, 1.1dan 1.0. Jangan bercabang dari masing-masing cabang versi pemeliharaan; tidak menggabungkan 1.0ke dalam masteratau menggabungkan masterkembali ke 1.0. Ambil satu hotfixcabang dan gabungkan ke semua cabang versi Anda. Jika ada konflik, itu akan memberi tahu Anda; tinjau kode Anda untuk memastikan perubahannya benar ( git diffadalah teman Anda).
Sekarang perubahan spesifik diterapkan di mana-mana. Silsilahnya bercabang, tetapi tidak apa-apa. Itu tidak sembarangan. 1.3Beri tag pada head sebagai 1.3.17, gabungkan ke setiap fitur dalam proses yang bercabang 1.3, dan lanjutkan.
The git flowekstensi membantu mengelola pemeliharaan, fitur, dan cabang perbaikan terbaru ini untuk Anda. Setelah Anda menyelesaikan alur kerja, ini sepele dan mengeluarkan banyak masalah dari manajemen kode sumber.
Saya telah melihat ini dilakukan pada tim pemrograman, tetapi saya sendiri belum bekerja sedalam itu sebagai seorang programmer, jadi saya masih memikirkan alur kerja sehari-hari saya sendiri.
gittag setelah setiap build berhasil? Ini akan memiliki keuntungan tambahan yang membuatnya benar-benar jelasgitkomit mana yang telah membangun masalah atau kegagalan pengujian, karena mereka akan tetap tidak ditandai.