10. SınıfBilişim Teknolojileri

Sürüm Kontrolü ve Kod Paylaşımı

Bilişim Teknolojileri · 10. Sınıf · Proje Uygulamaları

Konu Anlatımı

Sürüm Kontrolü ve Kod Paylaşımı

Bir proje uygulaması tek kişinin değil, çoğu zaman bir ekibin eseridir. Ekipte herkes aynı dosya üzerinde çalıştığında, hangi değişikliğin kim tarafından ve ne zaman yapıldığı takip edilemez hâle gelir. Bu sorunu çözen araç sürüm kontrol sistemidir. Sürüm kontrolü, kodun her değişikliğini ayrı bir kayıt olarak saklar; böylece geçmişe dönülebilir, kim neyi değiştirdi görülebilir ve birden çok kişi aynı proje üzerinde güvenle çalışabilir.

Bu derste ne öğreneceğiz?

Bu konuda önce sürüm kontrol sisteminin temel kavramlarını ve proje tasarımı aşamasında neden kullanıldığını öğreneceğiz. Bir değişikliği hazırlık alanına alıp kalıcı kayda çevirme adımlarını uygulayacağız. Dallar yardımıyla aynı projede birden çok işin paralel yürütülmesini göreceğiz. Dalları birleştirirken ortaya çıkan çakışmayı nasıl çözeceğimizi inceleyeceğiz. Son olarak sürüm numaralandırmasını ve ekip çalışması kurallarını öğreneceğiz.

1. Ön bilgi: neden sürüm kontrolü gerekir

Sürüm kontrolü olmayan projelerde en sık karşılaşılan sonuç, çalışan bir programın bozulmasıdır. Bir denemede yapılan değişiklik geri alınamadığında, saatlerce süren emek kaybolur. Klasör kopyalama yöntemi de güvenilir değildir; çünkü hangi kopyanın doğru olduğu belirsizleşir ve kopya sayısı çoğaldıkça karışıklık artar.

Sürüm kontrolü durum kavramını da netleştirir: kaydedilmiş, kaydedilmemiş ve geçici olarak hazırlanan durumlar ayrı ayrı bilinir. Bir programı denemekten çekinmeden değişiklik yapabilirsiniz; beğenmediyseniz tek komutla önceki kayda dönebilirsiniz. Bu özgürlük, deney yapmayı teşvik eder ve bu nedenle sürüm kontrolü yalnız bir arac değil, çalışma alışkanlığıdır.

2. Değişiklik kaydının oluşturulması

Sürüm kontrolünde üç aşamalı bir akış vardır. Birinci aşamada dosya çalışma ağacında bulunur; bu henüz kaydedilmemiş durumdur. İkinci aşamada değiştirilmiş dosyalar hazırlık alanına alınır; bu alan, bir sonraki kayda girmeyi bekleyen değişiklikleri tutar. Üçüncü aşamada kayıt oluşturulur ve değişiklik kalıcı geçmişe yazılır.

Kayıt mesajı yazmak yüzeysel görünse de önemlidir. Mesaj, ne yapıldığını tek cümlede ve emir kipinde anlatmalıdır. Örneğin bir sınıfın adı değiştirildiyse mesaj yalnız değişiklik konusunu belirtmeli, ayrıntıyı commit içine gömmelidir. Birbiriyle ilişkisiz iki değişikliği aynı kayda koymak, sonradan geri almak istediğinizde işi zorlaştırır.

3. Kayıt kimliği ve geçmişin izlenmesi

Her kayda, içeriğinden hesaplanan bir kimlik verilir. Bu kimlik kırk karakter uzunluğunda onaltılık bir karakter dizisidir ve içerik değişirse tamamen farklı bir değere dönüşür. Bu nedenle kayıt kimliği, içeriğin değiştirilmediğini göstermek için kullanılabilen bir parmak izidir.

Geçmiş sıralı bir liste hâlinde tutulur. git log komutu bu listeyi en yeni kayıttan başlayarak ekrana basar ve her satırda kimlik, tarih ve mesaj yer alır. İki kaydın kimliği aynıysa içerikleri de aynıdır. Bu özellik, kodun kopyalandığı yerlerde hangi sürümün daha yeni olduğunu anlamak için de kullanılır.

4. Dallar ve paralel çalışma

Dallar, sürüm kontrolünün en güçlü araçlarından biridir. Dal, kayıt çizgisinin bir dalıdır; açtığınızda ana çizgi olduğu gibi kalır ve siz bu yeni çizgi üzerinde çalışmaya başlarsınız. Bu sayede ana çizgideki kararlı sürüm bozulmaz.

Yeni bir özellik üzerinde çalışacaksanız kendi dalınızı açarsınız. Bu dal tamamlanıp denendiğinde ana çizgiye birleştirilir. Ekipte birden çok kişi aynı anda farklı özellikler üzerinde çalışabilir; herkes kendi dalındadır ve ana çizgiye yalnız hazır işler birleştirilir. Bu düzen, ana çizgideki programın sürekli çalışır durumda kalmasını sağlar.

5. Birleştirme ve çakışma çözümü

Bir dalda yapılan iş tamamlandığında birleştirme yapılır. Birleştirme çoğu zaman sorunsuzdur; ancak iki dal aynı satırları değiştirmişse sistem karar veremez ve çakışma bildirir. Çakışmada aynı satırlar iki farklı hâlde işaretlenir ve dosya özel bir duruma geçer.

Çakışma çözümü üç adımda yapılır: dosya elle açılıp doğru içerik yazılır, dosya hazırlık alanına alınır ve birleştirme kaydı oluşturulur. Çakışmayı çözmeden yeni kayıt açmak yasaktır; aksi hâlde çözülmemiş dosya sonraki birleştirmeleri de etkiler. Ekipte hangi tarafın seçileceği konusunda önceden bir kural belirlenmesi, çakışmaların hızla çözülmesini sağlar.

6. Sürüm numaralandırması

Publik edilen her sürüm bir numarayla etiketlenir. Numara üç bölümden oluşur ve bölümlerin anlamı bellidir. En büyük bölüm, uyumsuz değişikliklerde artar. Ortadaki bölüm, geriye uyumlu olarak yeni özellik eklendiğinde artar. En küçük bölüm ise yalnız hata düzeltmesi yapıldığında artar.

Bu ayrım kullanıcıya ne bekleyeceğini söyler. En küçük bölümün artması güvenlidir; orta bölümün artması yeni özellik anlamına gelir; en büyük bölümün artması ise eski kayıtların çalışmayabileceği anlamına gelir. Yanlış bölüm artırılırsa kullanıcı yanlış beklentiye girer ve güncelleme sırasında sorun yaşar.

7. Değişikliği geri alma

Bir hatalı kaydı geri almak için iki farklı yol vardır. Geri alma kaydı yöntemi, hatalı değişikliği etkisiz hâle getiren yeni bir kayıt oluşturur; geçmiş korunur, hatalı kayıt durur ama etkisizdir. Tarihi sıfırlama yöntemi ise geçmişten kayıtları siler. Tarihi sıfırlama geçmişi bozduğu için yalnız kendi dalınızda ve paylaşılmamış kayıtlarda kullanılmalıdır.

Ekip çalışmasında geri alma kaydı tercih edilir; çünkü herkes aynı geçmişi görür ve kimsenin kaydı kaybolmaz. Geri alma işlemi de bir kayıttır, bu nedenle kendi mesajıyla kaydedilir ve denetlenebilir.

8. Takip dışı bırakma kuralları

Derleme çıktıları, geçici dosyalar ve kişisel ayar dosyaları kayıt altına alınmamalıdır. Bu dosyaların Takip dışı bırakma listesine eklenmesi, ilk kayıttan önce kurulması gereken en önemli adımlardan biridir. Aksi hâlde bu dosyalar da kayıt altına girer ve çalışma ağacı kirlenir.

Takip dışı bırakma, ileride takip edilmesi gereken bir dosyayı da dışlayabilir. Bu yüzden bu liste dikkatli hazırlanmalı ve ekip içinde ortak bir dosyada tutulmalıdır. Ortak liste, herkesin aynı kurallara uymasını sağlar ve neden bazı dosyaların kaydedilmediği sorusu her seferinde yeniden sorulmaz.

Basit örnek

Bir öğrenci beş gün boyunca her gün üç kayıt oluşturmuştur. Toplam kayıt sayısı 5 × 3 = 15 olur. Bu öğrenci 15 kayıttan 5'ini geri almak isterse geriye 15 − 5 = 10 kayıt kalır. Ancak geri alma işlemi kayıt geçmişini silmez; onun yerine 10 kayıtlık etkin geçmiş elde edilir ve 5 geri alma kaydı görünür kalır.

İleri örnek

Bir ekip projesinde ana dalda 2 kayıt varken A dalında 8, B dalında 5 kayıt yapılmıştır. İki dal da tamamlanıp ana dala birleştirildiğinde ana daldaki toplam kayıt sayısı 8 + 5 + 2 = 15 olur. Bu hesap, ekibin hangi dalda ne kadar çalıştığını gösterir. A dalındaki özellik ana üründe kullanıcılara yansırken B dalındaki hata düzeltmesi hiç görünmeyebilir; bu nedenle dal adları anlamlı seçilmelidir.

Adım adım çözülmüş örnek

Soru: Bu depoda 30 dosya bulunmaktadır. Takip dışı bırakma listesinde 12 dosya yer alıyor. Depoda kaç dosya kayıt altındadır?

Adım 1: Depodaki toplam dosya sayısı belirlenir: 30. Adım 2: Takip dışı bırakılan dosya sayısı belirlenir: 12. Adım 3: Toplam dosyadan dışlananlar çıkarılır: 30 − 12 = 18. Adım 4: Sonuç yorumlanır; 18 dosyanın kayıt altında olduğu ve bu sayının küçük tutulmasının depo temizliğini göstergesi olduğu yazılır. Cevap: 18 dosya kayıt altındadır.

Kavram karşılaştırma tablosu

KavramAnlamıÖrnek
Çalışma ağacıHenüz kaydedilmemiş dosyalarKaydedilmemiş kaynak dosyası
Hazırlık alanıBir sonraki kayda girecek değişikliklerSahiplenilen dosyalar
KayıtKalıcı geçmişe yazılan değişiklikÖzellik tamamlandı
DalKayıt çizgisinin koluÖzellik dalı
BirleştirmeDalı ana çizgiye katmaHata düzeltmesi eklenmesi
ÇakışmaAynı satırların iki kez değişmesiİki kişi aynı satırı düzenledi
Geri alma kaydıEtkisi kaldırılan yeni kayıtHatalı ekran düzeltmesi
Takip dışı listeKaydedilmeyecek dosyalarDerleme çıktıları

Sık Yapılan Hatalar

Özet

Sürüm kontrolü, kod değişikliklerini ayrı kayıtlar hâlinde saklayarak geçmişe dönüşü ve ekip çalışmasını mümkün kılar. Bir değişiklik üç aşamadan geçer: çalışma ağacı, hazırlık alanı ve kayıt. Her kayda kırk karakterlik bir kimlik verilir ve bu kimlik içerik değişirse tamamen değişir. Dallar kayıt çizgisinin koludur; özellikler kendi dallarında geliştirilip tamamlandığında ana çizgiye birleştirilir. İki dal aynı satırları değiştirdiyse çakışma oluşur ve dosya elle düzeltilip yeniden hazırlık alanına alınarak çözülür. Sürüm numarasının üç bölümü sırasıyla uyumsuz değişiklik, yeni özellik ve hata düzeltmesini anlatır. Hatalı kayıt için geri alma kaydı oluşturmak geçmişi korurken, tarihi sıfırlama geçmişi bozar ve yalnız paylaşılmamış dallarda kullanılmalıdır. Derleme çıktıları gibi dosyalar takip dışı bırakma listesiyle ilk kayıttan önce dışlanmalıdır; 30 dosyadan 12'si dışlandığında 30 − 12 = 18 dosya kayıt altında kalır.

Kendini dene

Şu soruları cevaplayarak konuyu pekiştir: (1) Yeni bir özellik üzerinde çalışacaksınız; hangi adımlarla ilerleyeceğinizi ve hangi komutları kullanacağınızı yazınız. (2) İki kişi aynı dosyanın aynı üç satırını değiştirdiğinde ne olur ve nasıl çözülür? (3) Sürüm numarası 1.6.0 iken 1.6.1 ve 2.0.0 çıkmışsa bu değişikliklerin anlamını açıklayınız. Cevaplarınızı adım adım yazın; puana göre değerlendirmede adım sırası, komut seçimi, çakışma çözümü ve sürüm numarası yorumu ayrı ayrı değerlendirilir.

Sürüm Kontrolü ve Kod Paylaşımı — Sık Sorulan Sorular

Bu derste ne öğreneceğiz?

Bu konuda önce sürüm kontrol sisteminin temel kavramlarını ve proje tasarımı aşamasında neden kullanıldığını öğreneceğiz. Bir değişikliği hazırlık alanına alıp kalıcı kayda çevirme adımlarını uygulayacağız. Dallar yardımıyla aynı projede birden çok işin paralel yürütülmesini göreceğiz. Dalları birleştirirken ortaya…

1. Ön bilgi: neden sürüm kontrolü gerekir?

Sürüm kontrolü olmayan projelerde en sık karşılaşılan sonuç, çalışan bir programın bozulmasıdır. Bir denemede yapılan değişiklik geri alınamadığında, saatlerce süren emek kaybolur. Klasör kopyalama yöntemi de güvenilir değildir; çünkü hangi kopyanın doğru olduğu belirsizleşir ve kopya sayısı çoğaldıkça karışıklık…

Sürüm Kontrolü ve Kod Paylaşımı nedir?

Bir proje uygulaması tek kişinin değil, çoğu zaman bir ekibin eseridir. Ekipte herkes aynı dosya üzerinde çalıştığında, hangi değişikliğin kim tarafından ve ne zaman yapıldığı takip edilemez hâle gelir. Bu sorunu çözen araç sürüm kontrol sistemidir. Sürüm kontrolü, kodun her değişikliğini ayrı bir kayıt olarak saklar…

Sürüm Kontrolü ve Kod Paylaşımı konusunda ne öğrenilir?

Sürüm kontrolü değişiklik geçmişini saklar, geçmişe dönmeyi ve kim değiştirdi görmeyi sağlar.

Sürüm Kontrolü ve Kod Paylaşımı Kazanımları

Örnek Sorular ve Çözümleri

Örnek Soru 1 kolay

Sürüm kontrol sisteminin temel işlevi nedir?

  1. A) Değişiklik geçmişini saklamak
  2. B) Kodu derlemek
  3. C) Programı çalıştırmak
  4. D) Ekrana çıktı basmak
Cevabı göster

Doğru cevap: A) Değişiklik geçmişini saklamak

Değişiklik geçmişini saklamak kavramı Sürüm Kontrolü ve Kod Paylaşımı konusunun temel bir kavramıdır. Detaylar konu anlatımında verilmiştir.

Örnek Soru 2 orta

Beş gün boyunca her gün üç kayıt oluşturan bir çalışma için toplam kayıt sayısı kaçtır?

  1. A) 8
  2. B) 18
  3. C) 15
  4. D) 45
Cevabı göster

Doğru cevap: C) 15

Toplam kayıt sayısı çalışılan gün sayısı ile günlük kayıt sayısının çarpımıdır ve 5 × 3 = 15 hesaplanır.

Örnek Soru 3 zor

Ana dalda doğrudan çalışmak yerine ayrı dal açmanın temel yararı nedir?

  1. A) Kod satırı azalır
  2. B) Derleme hızı artar
  3. C) Dosya boyutu küçülür
  4. D) Ana dal kararlı ve çalışır kalır
Cevabı göster

Doğru cevap: D) Ana dal kararlı ve çalışır kalır

Özellikler kendi dallarında geliştirildiğinde ana dal kararlı sürümü gösterir ve herhangi bir anda çalışan bir program elde edersiniz. Denemeler ana dalı bozmaz.

Sıradaki adım

Konu anlatımları hesapsız okunur. Quiz, slayt ve deneme için hesap gerekir.

DersTeders ile devam et

Bilişim Teknolojileri için çalışma yolu

  1. OkuKonu anlatımını bu sayfada bitir.
  2. Soru çözÖrnekleri çöz, cevabı açıklamayla karşılaştır.
  3. Quiz ile pekiştirHesapla kendini ölç.

Slaytla adım adım öğren · Tüm dersler · Ana sayfa

Hesap açTüm dersleri keşfet

Konu anlatımları hesapsız okunur; quiz, slayt ve deneme için hesap gerekir.

Bu sayfa Sürüm Kontrolü ve Kod Paylaşımı konusunun anlatımını, kazanımlarını ve örnek sorularını içerir. Konuyla ilgili tüm sorular için testi çöz, diğer konular için DersTeders ana sayfasına geçebilirsin.

Bu konunun öğretmen materyallerini (ders planı, çalışma kâğıdı, çözümlü soru bankası, rubrik) yazdırabilirsin: Yazıcı çıktısı modülünü aç