git gibi "distributed" sistemlere karşı görünmek istemem. Birileri gerek görmüş işte. Biz svn kullandığımız halde kendi özel git depolarını kullanan arkadaşlar da var. Örneğin birisi kodu svn'den alıyor ve kendi git dünyasında istediği gibi çalışıyor. Sonra da oluşturduğu kod değişikliklerini yine svn'e gönderiyor.
Yani aşağıdakileri git'e karşı olduğum için değil, farklı bir hikaye olarak anlatıyorum.
Normalde ise işler şöyle yürüyor: Tek ana dal var. (Aslında her sürümün kendi dalı da var ama bunlar normalde bir daha hiç ana dala birleşmiyorlar.)
- Ali ana dalın bir görüntüsünü alıyor (bunu bir kere yapıyor)
Sonra örneğin bir hata temizliği için;
-
elindeki ana dal görüntüsünü tazeliyor; işe elindeki eski görüntüyle başlaması mantıklı olmaz, çünkü son tazelediğinden beri bir sürü değişiklik olmuştur
-
değişikliklerini yapıyor, programı deniyor
-
herşey yolunda gidince değişiklikleri ana dala gönderiyor; doganaydin'ın bahsettiği çakışma riski burada da var: Ali çalışırken ana dal değişmiş olabilir ve göndermeye çalıştığı dosyaların aynı satırlarına başkaları dokunmuş olabilir
Bu durumda Ali, ana dalın görüntüsünü tekrar tazeliyor ve çakışmaları yerel olarak çözüyor. Ve gidermiş olduğu hem asıl hatanın değişikliklerini hem de bu çakışmanın çözümünü ana dala gönderiyor. (Çok küçük olasılıkla yine çakışma olabilir.)
Yukarıdaki yöntem ana dalın hep sağlıklı halde bulunmasına yardım ediyor. Bütün programcılar aynı şekilde çalıştıkları için ana dal hep güncel oluyor.
Bazen ise çok büyük değişikliklerden önce ana dal çatallanıyor ve bir grup insan o dal üzerinde çalışıyorlar. Yukarıda ana dal için anlattıklarım aynen bu dal için de geçerli: o programcı grubu bu dalı sağlıklı tutuyor. En sonunda da onların dalı olduğu gibi ana dala tekrar bağlanıyor; yani onların yapmış oldukları bütün değişiklikler de artık ana dala gelmiş oluyorlar. (O dal artık kapatılıyor.) Tabii büyük bir iş olduğu için o daha dertli oluyor.
Çatallama yöntemi birbirlerinden güzelce ayrılabilen projelere daha uygun. Örneğin o pogramcı grubunun çalıştığı daldaki çoğu değişiklik ana dalda bulunmayan bir klasör altında oluşuyor. Onun için oradaki kodların zaten çakışma riskleri bulunmuyor.
Neyse; bu da böyle başka bir yöntem. :)
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]