Saya telah melihat cabang pengembang yang digunakan dalam dua skenario utama:
Komunitas open-source, di mana cabang-cabang ini sebenarnya garpu repositori, sehingga pengelola proyek dapat mengunci akses ke repositori master dan memerlukan integrasi melalui permintaan tarik. Ini membuat hidup lebih sulit bagi para kontributor, tetapi jauh lebih mudah bagi para pengelola, yang tentu saja adalah intinya, dan ini adalah model yang sangat sukses di GitHub.
Tim dan organisasi yang tidak memiliki integrasi terus-menerus dan rekam jejak ketidakstabilan dalam penyebaran mereka, atau lebih buruk, ketidakstabilan dalam bangunan mereka. Tim-tim ini umumnya mencoba menggunakan cabang pengembang sebagai cara untuk melindungi stabilitas garis utama, dan hasilnya - biasanya - periode penggabungan yang panjang dan sangat menyakitkan sebelum rilis, diikuti oleh periode stabilisasi yang lebih lama dan lebih menyakitkan, yang kadang-kadang tidak terjadi sampai setelah rilis.
Saya tidak ingin ini menjadi kata-kata kasar tentang mengapa Anda membutuhkan CI, tetapi jelas dari pertanyaan Anda bahwa Anda tahu Anda tidak cukup sering mengintegrasikan perubahan Anda, jadi IMO tidak ada gunanya menari di sekitar masalah.
Kecuali jika Anda benar-benar bekerja dalam tim yang terdistribusi secara geografis dengan kebutuhan untuk "melakukan" perubahan dari pengembang luar, model branch-per-developer benar-benar tidak masuk akal. Ini terutama tidak masuk akal dengan git, karena setiap pengembang sudah secara teknis memiliki nya repositori / sendiri. Sebagian besar organisasi harus berintegrasi sangat sering - seperti, beberapa kali per hari.
Saat ini saya bagian dari grup yang terdiri dari 35 kontributor yang dibagi menjadi 4 tim yang terpisah, kebanyakan orang check-in setidaknya 2-3 kali sehari, beberapa orang 10-15 kali; itu tidak biasa untuk melihat bangunan rusak dan sangat jarang bagi mereka untuk tetap rusak selama lebih dari beberapa menit. Git menangani penggabungan dengan begitu mudah sebagian besar waktu sehingga cabang pengembang jarak jauh hanyalah overhead yang tidak perlu. Cukup tarik, gabungkan secara lokal, dan jalankan tes komit sebelum Anda mendorong, itu sederhana.
Jika Anda benar - benar harus menunda integrasi untuk melindungi stabilitas cabang master, model tipikal yang terbukti adalah menggunakan cabang yang tidak stabil - kadang-kadang disebut cabang pengembangan , seperti yang dijelaskan dalam model percabangan Git yang sukses . Jika pengembang tidak berhasil menggabungkan ke cabang ini (yang hanya perlu dibangun , tidak berjalan sempurna) setidaknya sekali sehari, maka Anda memiliki masalah kualitas / disiplin dan bukan masalah kontrol revisi; menutupinya dengan menggunakan cabang pengembang yang tidak terintegrasi hanya akan mengatasi masalah, dan dengan melakukan itu, sebenarnya membuat penggabungan akhirnya jauh lebih menyakitkan dan tidak stabil daripada yang seharusnya.
Cabang fitur bukan yang terburuk, tetapi IMO sangat sedikit proyek yang sebenarnya cukup besar untuk menjaminnya; jika proyek Anda sangat besar (yaitu berton-ton fitur yang sedang dikerjakan sekaligus) maka Anda akan melihat hasil yang lebih baik dari membaginya menjadi komponen otonom yang terpisah daripada jika Anda harus mengatasi masalah dengan kontrol sumber.
Anda dapat mengabaikan saran ini jika Anda mau, dan banyak tim melakukannya, tetapi salah satu alasan model percabangan yang ditautkan di atas begitu populer dan sukses adalah bahwa itu dirancang untuk bekerja dengan integrasi terus - menerus, bukan menentangnya.
Di cabang kerja Anda jika Anda pergi:
Anda juga dapat bergabung dari cabang pengembang lain
Apa yang akan dilakukan adalah menggabungkan perubahan master ke cabang pengembangan Anda.
sumber
git merge master
sementara pada fitur cabang memeriksa adalah apa yang saya cari. Terima kasihJika dev-A dan dev-B adalah cabang yang berbeda untuk proyek yang berbeda, maka apa yang dijawab @scaryrawr adalah yang terbaik.
Tetapi jika dev-A dan dev-B sebenarnya persis kode yang sama (proyek yang sama) maka alternatifnya adalah keduanya bekerja pada salah satu cabang. Misalnya Anda membuat master cabang yang disebut 'devWork'. Anda berdua checkout devWork, mengerjakannya, komit, dan dorong perubahan. Perubahan yang didorong tidak pada Master tetapi di devWork, maka pengguna cabang lainnya hanya perlu melakukan PULL secara lokal untuk mendapatkan perubahan yang didorong.
Anda kemudian dapat mengikuti metode standar untuk menyelesaikan pekerjaan di devWork kembali ke Master dll.
sumber