Biz küçük bir ISV mağazasıyız ve genellikle her ay ürünlerimizin yeni bir sürümünü gönderiyoruz. Subversion'u kod depomuz olarak ve Visual Studio 2010'u da IDE olarak kullanıyoruz. Birçok insanın Mercurial ve diğer dağıtılmış kaynak kontrol sistemlerini savunduğunun farkındayım, ancak bu noktada bunlardan nasıl faydalanabileceğimizi göremiyorum, ama yanılıyor olabilirim.
Ana sorunumuz, dalları ve ana gövdeyi nasıl senkronize tutmaktır.
Bugün işleri şu şekilde yapıyoruz:
- Yeni sürümü yayınla (Subversion'da otomatik olarak bir etiket oluştur)
- Gelecek ay piyasaya sürülecek ana gövde üzerinde çalışmaya devam et
Ve döngü her ay tekrarlanır ve mükemmel çalışır. Sorun, acil bir hizmet sürümünün serbest bırakılması gerektiğinde ortaya çıkar. Ağır gelişmekte olduğu ve acilen serbest bırakılacak kadar stabil olmadığı için ana gövdeden (2) serbest bırakamayız.
Bu durumda aşağıdakileri yaparız:
- 1. adımda oluşturduğumuz etiketten bir şube oluşturun
- Hata düzeltme
- Test ve serbest bırakma
- Değişikliği ana gövdeye geri itin (varsa)
En büyük sorunumuz bu ikisini birleştirmek (ana dalla). Çoğu durumda otomatik birleştirmeye güvenemeyiz, çünkü:
- ana bagajda çok fazla değişiklik yapıldı
- Karmaşık dosyaları (Visual Studio XML dosyaları vb. gibi) birleştirmek çok iyi çalışmıyor
- başka bir geliştirici / ekip anlamadığınız değişiklikler yaptı ve onu birleştiremezsiniz
Yani bu iki farklı sürümü (şube ve ana) senkronize tutmak için en iyi uygulama. Ne yaparsın?