Konu Anlatımı
Sürüm Kontrol ve Takım Çalışması
Sürüm kontrol sistemi, bir yazılım projesinde kodun her değişikliğini kim tarafından, ne zaman ve neden yapıldığı bilgisiyle birlikte kaydeden çalışma düzenidir. Kayıt defteri tutulmadığında projenin ilerleyişi tek bir kişinin hafızasına bağlı kalır; hata yapıldığında önceki çalışan hâle dönmek güçleşir.
Temel Kavramlar
- Çalışma ağacı, geliştiricinin üzerinde çalıştığı dosyaların güncel durumudur.
- Hazırlık alanı, bir sonraki kaydın temsil edileceği ayrılmış bölümdür.
- Kayıt, bir değişikliğin kim, ne zaman ve neden bilgisiyle saklanan anlık görüntüsüdür.
- Dal, bir konuya özel paralel çalışma hattıdır; ana hatta birleştirilerek kapatılır.
Dal Stratejileri
Yalın dal yaklaşımında her geliştirici kendi dalında çalışır ve işi bitince ana hatta birleştirilir. Bu yaklaşım ana hattın sürekli derlenebilir kalmasını sağlar; buna karşılık büyük ekiplerde dal sayısı çoğaldığı için birleştirme yükü artar. Uzun ömürlü ana hat yaklaşımında ise geliştirme özellik dallarına alınır, ana hat yalnızca yayıma hazır sürümleri taşır.
Birleştirme ve Çakışma
Birleştirme sırasında iki kolun aynı satırları farklı biçimde değiştirmişse çakışma oluşur. Çakışma otomatik çözülemez; geliştirici dosyayı açar, her satırı bilinçli biçimde seçer ve sonucu kaydeder. Ayrımsama komutu ise geçmişteki bir kaydın yaptığı değişikliği başka bir kola tekrar uygulamak için kullanılır.
Kayıt Mesajı ve Kod İncelemesi
Kayıt mesajının ilk satırı, değişikliğin ne yaptığını tek cümlede anlatır; ayrıntılı gerekçe gövde bölümüne yazılır. Kod incelemesi, değişikliğin eklenmeden önce başka bir kişi tarafından okunmasıdır. İnceleme yorumları satır bazlı geri bildirimlerdir ve değişikliğin anlaşılabilirliğini artırır.
Geçici Saklama ve Kurtarma
Yarım kalan bir çalışmayı kaydetmeden önce geçici saklama komutuyla o ana kadarki değişiklikler korunur; böylece ana hattaki bir sorun giderilip çalışmaya dönülebilir. Yanlış bir kayıtla ilerlenirse hareket adımları geri alınarak önceki kayda dönülür. Bu iki mekanizma, acil durumlarda emek kaybını belirgin biçimde azaltır.
Etiket ve Sürümleme
Etiket, geçmişteki belirli bir kaydı değişmez biçimde işaretleyen adımdır. Yayımlanan sürümler etiketlenerek kodun hangi sürümde olduğu sorusu tek adımla yanıtlanır. Sürüm numarasındaki her artış, o sürüme eklenenlerin yazılı kaydıyla birlikte tutulmalıdır.
Uygulama Önerileri
Günlük geliştirme sırasında iletişimi kısa ve yazılı tutmak, sonradan gerektiğinde hatırlanabilir bir iz bırakır. Büyük değişiklikleri tek kayıtta sunmak yerine birbirinden bağımsız küçük kayıtlara bölmek incelemeyi kolaylaştırır. Dal adı da hangi konunun çözüldüğünü tek bakışta anlatacak biçimde seçilmelidir.
Ne Öğreneceğiz
Sürüm kontrol sistemlerinde kayıt tutma, dal yönetimi, birleştirme, çakışma çözümü ve kod incelemesi süreçlerinin uygulanması. Bu konuda ögrenme çıktıları:
- Sürüm kontrol sistemlerinde çalışma ağacı ile kayıt kavramlarını açıklar.
- Dal açma, birleştirme ve etiketleme adımlarını doğru sırayla uygular.
- Çakışma çözümünde izlenecek yolu belirler ve sonucu denetler.
- Kod incelemesi ve kayıt mesajı kurallarını ekip çalışmasına uygun biçimde uygular.
- Geri alma ve geçici saklama işlemleriyle veri kaybını önleyen çalışma planı çıkarır.
Ön Bilgi
Bu konuya başlamadan önce temel kavram ve ön koşulları kavramanız yardımcı olacaktır. Konunun çerçevesinde şu kavramlar dikkat ister:
- Her kayıt; değişikliği yapan kişiyi, tarihi ve değişikliğin nedenini birlikte saklar.
- Çalışma ağacındaki kaydedilmemiş değişiklikler henüz geçmişe yazılmamıştır.
- Çakışma otomatik çözülemez; doğru seçim geliştiricinin bilinçli kararıdır.
- Yayımlanan her sürüm, geriye dönük ulaşılabilmesi için etiketlenmelidir.
- Küçük ve konu odaklı kayıtlar, büyük değişikliklere göre daha kolay incelenir.
- Geri alma işlemi geçmişe dokunmaz; geçmişin bütünlüğü korunur.
Basit Örnek ve Günlük Yaşam
Günlük yaşamda ve mesleki bağlamda bir uygulama:
Soru: Dört kişilik bir ekipte herkes doğrudan ana hatta kayıt yapmak istiyor. Hangi strateji önerilir?
- Ekipteki kişi sayısını ve konu sayısını belirle.
- Ana hattın derlenebilir kalmasını hedef olarak seç.
- Kişi başına dal açma kuralını yaz ve inceleme düzenini tanımla.
Sonuç/cevap: Yalın dal yaklaşımı seçilir: her konu için dal açılır, iş bitince ana hatta birleştirilir ve dal kapatılır.
İleri Örnek
Daha ileri bir uygulama:
Soru: Bir ekipte inceleme yorumlarının sürekli kişisel tartışmaya dönüştüğü görülüyor. Nasıl bir düzen kurulur?
- İnceleme kapsamını değişikliğin amacıyla sınırla.
- Yorumları satır bazlı ve teknik gerekçeli yaz.
- Onay ve sürüm kararını bir kişide topla.
Sonuç/cevap: İnceleme, yalnız kodun kendisiyle ilgili teknik yorumlara indirgenir; her yorum gerekçelidir ve son onay kararı tek bir kişide toplanır.
Adım Adım Çözülmüş Örnek
Örnek 1: Dal stratejisi seçimi konusunun adımları:
- Ekipteki kişi sayısını ve konu sayısını belirle.
- Ana hattın derlenebilir kalmasını hedef olarak seç.
- Kişi başına dal açma kuralını yaz ve inceleme düzenini tanımla.
Karşılaştırma Tablosu
| Kavram | Açıklama |
|---|
| Her kayıt; değişikliği yapan kişiyi, tar | Her kayıt; değişikliği yapan kişiyi, tarihi ve değişikliğin nedenini birlikte saklar. |
| Çalışma ağacındaki kaydedilmemiş değişik | Çalışma ağacındaki kaydedilmemiş değişiklikler henüz geçmişe yazılmamıştır. |
| Çakışma otomatik çözülemez; doğru seçim | Çakışma otomatik çözülemez; doğru seçim geliştiricinin bilinçli kararıdır. |
| Yayımlanan her sürüm, geriye dönük ulaşı | Yayımlanan her sürüm, geriye dönük ulaşılabilmesi için etiketlenmelidir. |
| Küçük ve konu odaklı kayıtlar, büyük değ | Küçük ve konu odaklı kayıtlar, büyük değişikliklere göre daha kolay incelenir. |
| Geri alma işlemi geçmişe dokunmaz; geçmi | Geri alma işlemi geçmişe dokunmaz; geçmişin bütünlüğü korunur. |
Sık Yapılan Hatalar
Dosyaları kaydetmeyi unutmak: Kayıt komutu çalıştırılmadan önce yalnız çalışma ağacında duran değişiklikler kayıt içine girmez ve dal değiştirildiğinde kaybolur.
Çakışmayı otomatik seçmek: Çakışan satırlardan biri hazır seçilirse iki tarafın amacı da bozulabilir; her satır ayrı ayrı değerlendirilmelidir.
Tek kayıtta büyük değişiklik yapmak: Yüzlerce satırlık tek kayıt incelenemez ve hata çıktığında kaydı geri almak yerine küçük düzeltmeler yapmak zorunda kalınır.
Ana hatta doğrudan kayıt yapmak: Derlenemeyen bir kayıt ana hatta girdiğinde bütün ekibin derlemesi durur ve hatanın kaynağı bulunması zorlaşır.
Etiketlemeyi atlamak: Etiketlenmeyen bir sürüm, sonradan hangi kodun yayımlandığı bulunamayan belirsiz bir durum bırakır.
Özet
Sürüm kontrol sistemi; çalışma ağacı, hazırlık alanı, kayıt, dal ve etiket kavramlarıyla kodun geçmişini izlenebilir biçimde saklar. Kayıt her değişiklik için kim, ne zaman ve neden bilgisini tutar. Dal stratejisi, ana hattın derlenebilir kalmasını sağlayacak biçimde seçilir. Birleştirme sırasında aynı satırlar farklı biçimde değişmişse çakışma oluşur ve bu çakışma geliştiricinin bilinçli kararıyla çözülür. Yarım kalan çalışmalar geçici saklama ile korunur, yanlış kayıtlar geri alınarak önceki kayda dönülür. Yayımlanan sürümler değişmez etiketlerle işaretlenir; böylece hangi kodun hangi sürümde olduğu tek adımda bulunur. Küçük ve konu odaklı kayıtlar, büyük değişikliklere göre çok daha kolay incelenir.
Kendini Dene
Soru: Yönerge: Bir ekipte sürüm kontrol düzenini anlatan kısa bir uygulama kılavuzu yaz. Kılavuzda dal açma adımı, kayıt alırken uyulacak mesaj kuralı, kod incelemesi öncesindeki kontrol listesi, çakışma çözümünde izlenecek yol ve etiketleme kuralları yer alsın.
Örnek cevap: Puanlama anahtarı: dal açma adımının ve adlandırma kuralının yazılması 4 puan; kayıt mesajının kısa ilk satır ve gerekçeli gövde kuralının belirtilmesi 4 puan; inceleme öncesi kontrol listesinin yazılması 4 puan; çakışma çözümünde seçim ve sınama adımlarının anlatılması 4 puan; etiketleme kurallarının yazılması 4 puan. Toplam 20 puan. Model cevap: Kılavuz; dalın tek konuyu çözdüğünü, mesajın eyleme dönük ve kısa olması gerektiğini, incelemede sınır durumlarının sıranması gerektiğini, çakışmada iki tarafın amacının birlikte korunması gerektiğini ve etiketin değişmez olduğunu belirtir.