Ürünümüz için en uygun olan Git iş akışını seçmeye çalışıyorum. İşte parametreler:
- Yılda birkaç büyük yayın yapıyoruz, en fazla 10 diyelim.
- Ürünümüzün aynı anda etkin birden çok sürümüne sahibiz (bazıları v10.1’de, bazıları v11.2’de vs.)
- Aynı anda birden fazla sürüm üzerinde çalışabilmemiz gerekiyor (v12.1 üzerinde çalışıyor olabiliriz, ancak sürümün sonuna geldikçe v12.2'de aynı anda çalışmaya başlıyoruz)
- Kritik hatalar bulunduğunda, sürümleri düzeltebilmemiz gerekir.
Şimdiye kadar, işte işe yarayabileceğini düşündüğüm yol:
- Tek bir uzaktan repo kullanılır
- Master'dan şube 12.1 oluşturun
- 12.1'e dayalı özellik dalları oluşturun, onları işleyin ve tekrar 12.1'e birleştirin,
- Gelecek sürüm için çalışmaya başlamamız gerektiğinde, 12.1 tabanlı yeni bir şube 12.2 oluşturun.
- Ondan sonra, 12.1 için bir özellik üzerinde çalışırken, 12.1'den dal oluşturun, değişiklik yapın ve hem 12.1 hem de 12.2'de birleştirin,
- 12.2 için bir özellik üzerinde çalışıyorsanız, 12.2'den şube oluşturun, değişiklik yapın ve yalnızca 12.2'ye birleştirin,
- Sürüm 12.1 tamamlandığında, bunu master ile birleştirin ve master şubesini 12.1 ile etiketleyin
- Bir düzeltmeye ihtiyaç duyulursa, ihtiyacı olan en eski sürümden bir düzeltme dalı oluşturun, değişiklik yapın ve etkilenebilecek sürümler ve gelecek sürümler için tüm sürüm dallarına geri dönün; En son kararlı sürüm dalı etkilendiyse, ana birimde birleştirin.
Birkaç kaygım var:
- Düzeltmeleri eski dallardan yeni dallara dahil etmenin, özellikle çok fazla çakışan değişiklik olsaydı sorunsuz bir süreç olacağından emin değilim; Uyuşmazlık olacağına benzeyen durumlarda her dalda manuel olarak düzeltmek daha akıllıca olur mu?
- Gördüğüm iş akışı modelleri, serbest bırakma dallarını çok canlı tutmuyor gibi görünüyor, bir kez yapıldığında, serbest bırakma master ile birleştiriliyor, etiketleniyor ve çıkartılıyor. Bununla ilgili sorunum, eğer sahip olduğum usta etiketler varsa, bir dalda düzeltmeyi daha kolay gözüküyorsa serbest bırakma durumunu nasıl yöneteceğimi bilmiyorum ve daha sonra her zaman geri dönebileceğim bir sürüm var. Bu son düzeltmeyi içerir (sürümdeki düzeltmeleri bile etiketleyebilirim). Master'a geri dönebilmemin bir yolu olduğundan ve bir şekilde düzeltmeler uygulanmış sürümün bir kopyasına sahip olduğundan ve bu etiketi güncellediğinden emin değilim.
Gözden geçirmiş olabileceğim veya belirtmiş olduğum şartlar doğrultusunda işleri başarmanın daha iyi yollarına ilişkin yorumlar takdir edilmektedir.