Versiyon Kontrol Sistemi Nedir ve Neden Kullanılır?

Revizyon kontrolü veya kaynak kontrolü olarak da bilinen VCS (Versiyon Kontrol Sistemi), geliştiricilerin kaynak ve konfigürasyon (kod olarak konfigürasyon kullanıldığı durumda) kodundaki değişiklikleri izlemelerine yardımcı olan araçlardır. Versiyon Kontrol araçları ilişkili tüm meta veriler de dahil olmak üzere, kod üzerinde yapılan değişiklikleri takip eder. Kaynak kodunu kazayla silinme veya sabotaj gibi olası felaketlerden korur. Kaynak kontrolü, yüksek performanslı IT ekipleri tarafından oldukça önemsenen hayat kurtarıcı bir yöntemdir. SVN, TFS, GIT, sektörde en çok tercih edilen kaynak kontrol araçlarındandır.

devops-transformation

Versiyon Kontrolü’nün Faydaları

Versiyon Kontrolü, DevOps dönüşümünün temel taşıdır. Sadece değişiklikleri kaydetmekle kalmaz, aynı zamanda geliştirme ekibinin daha kaliteli yazılımlar elde etmesine ve daha hızlı geliştirmesine yardımcı olur. Best practice’lerden yola çıkarak doğru aracı kullanırsanız:

  • Artan şeffaflık
  • Daha iyi ekip çalışması
  • Daha hızlı proje teslimi gibi avantajlar elde edebilirsiniz

Kaynak kontrolü (diğer bir deyişle Versiyon Kontrolü) değişikliklerin tam geçmişini kaydeder. Repository’ye erişimi olan herkes, kodda kim tarafından ve ne zaman değişiklik yapıldığını kolayca görebilir. Bu bilgi paylaşımı şeffaflığı artırarak, ekip içi işbirliğine katkıda bulunur.

Kaynak kontrolünün faydaları ekip çalışması için hayat kurtarıcıdır. İlk olarak, sürüm kontrol herkesin kendi kopyası üzerinde çalışmasını ve ardından isteğe bağlı değişiklikleri yansıtmasını sağlar. Herhangi bir çakışma olursa, değişikliği yapan kişi durumu inceler, sorunu çözmek için değişikliği geri alır veya kodu düzeltir. Ayrıca, sürüm kontrolü, geliştiricilerin ayrı bir geliştirme alanı oluşturmasına izin veren Branching adlı bir mekanizma sunar. Bu alanlar temel olarak farklı özellik kümeleri içindir. Branch’lerdeki geliştirme bittiğinde, kodun son ana versiyonu için branchler birleştirilmelidir.

Branching ve Merging

Teorik olarak, bir proje veya bir repo için sınırsız sayıda branch oluşturulabilir. Ancak, branch sayısını uzun süreli olarak fazla tutmak pratikte faydalı değildir. Her ne kadar belli bir amaçla oluşturulmuş olsalar da, branchlerin sık sık ana branch ile birleşmesi çakışma riskini büyük ölçüde azaltır.

Branching için branching stratejisi adı verilen yöntemler vardır. Feature Branching ve Release Branching, ekip çalışması yapmak için yaygın olarak kullanılan modellerdir. Güçlü ve tutarlı bir branhcing  stratejisi, ekip başarısına büyük katkı sağlar.

Release Branching, bir branch’in release için kullanılmasını ifade eder. Ekip yeni bir versiyon üzerinde çalışmaya başladığında, bir branch oluşturulur ve bir sonraki versiyona kadar yapılan tüm işler bu branch’te depolanır. (v.0.1 veya v.0.2 gibi)

Genellikle ürün içindeki bir özelliği etkinleştiren ve devre dışı bırakan feature flag’ler ile birleştirilen Feature Branching, bir ana sistemde birleştirilebilen ve tamamlanmış tek bir feature olarak dağıtılabilen gereksinimleri toplamak için kullanılır.

devops-transformation

Kaynak Kod Yönetimi Best Practice’leri Nelerdir?

  • Sık Commit Yapabilme
  • En Son Sürümde Çalışma
  • Branch Kullanımı
  • Anlamlı İşlem Mesajları Oluşturabilme
  • Sürekli Entegrasyon ile Entegre Etme