Geliştirici dallarının iki ana senaryoda kullanıldığını gördüm:
Bu dalların aslında depo çatalları olduğu açık kaynaklı topluluk, böylece proje sahipleri ana depoya erişimi kilitleyebilir ve çekme istekleriyle entegrasyon gerektirebilir. Bu, katkıda bulunanlar için hayatı zorlaştırır, ancak elbette tam olarak önemli olan koruyucular için çok daha kolay ve bu, GitHub'da çok başarılı bir model.
Sürekli entegrasyonu olmayan ve dağıtımlarında istikrarsızlık ya da yapılarında daha da kötüsü olan bir sicile sahip olmayan ekipler ve kuruluşlar. Bu ekipler genellikle geliştirici dallarını ana hattın istikrarını korumak için bir yol olarak kullanmaya çalışırlar ve sonuç - tipik olarak - serbest bırakılmadan önce uzun ve çok acı verici birleşme periyodu, ardından daha uzun ve daha acı verici bir stabilizasyon periyodudur. serbest bırakıldıktan sonra gerçekleşmez .
Bunun neden CI'ye ihtiyacınız olduğuna dair bir rant olmasını istemiyorum, ancak sorularınızdan, değişikliklerinizi yeterince sıklaştırmamanız gerektiğini bildiğiniz açıktır , bu nedenle IMO'nun bu konuda dans etmenin bir anlamı yoktur.
Aslında, dış geliştiricilerin değişikliklerini "geçmesi" gereken coğrafi olarak dağıtılmış bir ekipte çalışmıyorsanız, geliştirici başına şube modeli gerçekten bir anlam ifade etmiyor. Özellikle git ile mantıklı değil, çünkü her geliştiricinin teknik olarak zaten kendi havuzu var. Çoğu kuruluş, günde birkaç kez olduğu gibi çok sık entegre olmalıdır.
Şu anda 4 ayrı takıma ayrılmış yaklaşık 35 katılımcıdan oluşan bir grubun parçasıyım, çoğu insan günde en az 2-3 kez, bazı insanlar 10-15 kez kontrol ediyor; birkaç dakikadan fazla kırık kalmaları için kırık ve son derece nadir yapıları görmek olağandışıdır. Git, birleştirmeleri o kadar zahmetsizce ele alır ki, çoğu zaman uzak geliştirici şubeleri gereksiz ek yük oluşturur. Sadece çekmeden önce yerel olarak çekin, birleştirin ve tamamlama testleri yapın, bu basit.
Ana dalın kararlılığını korumak için entegrasyonu kesinlikle ertelemeniz gerekiyorsa , kanıtlanmış tipik model, Başarılı Git dallanma modelinde açıklandığı gibi, bazen geliştirme dalı olarak da adlandırılan kararsız bir dal kullanmaktır . Geliştiriciler günde en az bir kez bu dalda başarılı bir şekilde birleşemezlerse (sadece kurması , kusursuz çalışmaması gerekir ), bir revizyon kontrol problemi değil kalite / disiplin probleminiz var; entegre olmayan geliştirici dalları kullanarak bunu örtmek sadece sorunu çözer ve bunu yaparak, gerçekte nihai birleşmeleri olması gerekenden çok daha acı verici ve kararsız hale getirir.
Özellik dalları en kötü değil, ama IMO çok az proje onları garanti edecek kadar büyük; projeniz çok büyükse (yani bir kerede tonlarca özellik üzerinde çalışılıyorsa), kaynak kontrolü ile ilgili problemi kağıda dökmekten ayrı otonom bileşenlere bölmekten daha iyi sonuçlar görürsünüz.
İstersen bu tavsiyeyi görmezden ve birçok ekipleri, ama dallanma modeli yukarıda bağlantılı nedenlerinden biri bu kadar popüler ve başarılı o işe tasarlanmış olmasıdır ile karşı değil, sürekli entegrasyon.