Sürekli olarak geliştirilen bir web projesinde (bir ürün değil) şu anda git akışına dayanan şu dallanma stratejisine sahibiz :
- şube geliştirmek: son çalışma sürümü
- ana dal: serbest bırakılacak / serbest bırakılacak sürüm
- özellik dalları: geliştirme özellikleri
- düzeltme dalları: yayımlanan sürümünde acil hata düzeltmeleri
Master , salt okunur, geliştirme veya düzeltme dallarından çekme istekleri ile güncellenir . Her güncelleme, sürüm sistemine bir sürüm adayının oluşturulmasına ve dağıtılmasına neden olur. Serbest bırakılan adaylar manuel olarak onaylandıktan sonra üretime dağıtılır.
Özellik dalları , geliştirmeye dayalı olarak veya master ile birleştirilen son taahhütten oluşturulur. Özellik dalından geliştirilecek bir çekme isteği oluşturulur, entegrasyon testlerinin ve kabul testlerinin (otomatik ve manuel) yürütüldüğü ücretsiz bir test sistemine uygulanır. Başarılı bir şekilde test edildiğinde ve incelendiğinde, PR birleştirilir, böylece bir sonraki sürümün parçası olur (yani geliştirmeden ustaya birleştirilir).
Amacım
Bunu basitleştirmek ve geliştirme dalından kurtulmak istiyorum. Geliştirme dalının çoğunlukla tarihsel nedenleri vardır ve her zaman başarılı bir şekilde test edilmiş bir versiyon olduğu için, onu ustadan ayrı tutmanın gereksiz olduğunu düşünüyorum. Başka bir birleştirme olmadığından, kaldırılması da yayınlama işlemini basitleştirecektir.
Aşağıdaki kısıtlamalarım var:
- sürümler planlanmıştır ve tam otomatikleştirilmemelidir
- özellik dalları genellikle kısa ömürlü olsa da, bazıları birkaç hafta boyunca birleşmeden kalır (örn. yeniden tasarım), ancak test edilmesi gerekir (şu anda geliştirmek için açık çekme istekleri olarak)
- bazen tek bir özellik normal sürümün dışında yayınlanmalı ve etkin bir şekilde düzeltmeye dönüştürülmelidir. Mevcut strateji ile bir özellik dalını yeniden temsilen ve doğrudan ana sisteme birleştirebilirim
- evreleme üzerine harici sistemlerle yapılan kabul testlerinden sonra başarısız olmamız gerekir.
Geçiş hakkında emin değilim:
- şu anda testler için çekme talepleri oluşturuyorum ve sürümler için birleştirme taahhütleri yapıyorum. Bunu birleştirebilir miyim?
- Master en son sürümden önce olduğunda düzeltmelerle nasıl başa çıkılacağı. Sürümleri doğrudan düzeltme dallarından oluşturmalı ve dağıtmalı mıyım?
- zaten birleştirildikten sonra bir sürümden hariç tutulması gereken özelliklerle başa çıkmanın mantıklı bir yolu var mı? Ayrı bir geliştirme dalı bu vakalar için gerçekten bir avantaj mıdır? Çoğu zaman geri döndürme ve geri döndürme işlemlerini manuel olarak yine de taahhüt ederim.