Saturday, October 03, 2009

Subversion - VSS karşılaştırması

Bir süredir source control için Subversion mı daha iyi yoksa emektar Visual Source Safe (VSS) ile mi devam etmeli sorusu üzerine düşünüyordum. Karar: Subversion daha iyi, VSS tez zamanda terk edilmeli.

Subversion'da esas olanın sunucudaki veri olduğu, kendi bilgisayarındaki kopyanın geçici olduğu daha vurgulu. VSS'te önce VSS arayüzünü açman, ilgili dosyayı bulup kendi bilgisayarındaki doğru dizine check-out etmen, işin bitince check-in etmek gerekiyor. Subversion'da check-out adımı yok, Subversion arayüzünü açman da gerekmiyor. Her değişiklik yaptıkça çalıştığın dizine sağ klikleyip commit ediyorsun. Değişiklikleri geri almak için kendi dizinine sağ klikleyip revert, sunucudaki güncel hali almak için update diyorsun.

TortoiseSVN'de hangi dosyanın değişitiğini dosya/dizin ikonundan anlıyorsun. VSS'te dosyların attribute'una bakman lazım, eğer read only değilse değişmiştir. Ancak değiştiği halde sonradan read only yapılmış ise anlamak daha güç.

Bilgisayarında - ağa bağlı değilken dahi - TortoiseSVN kurulu ise değişiklikleri geri alabilirsin.

TortoiseSVN'in diff'i ile üzerinde çalıştığın dosyanın orjinal dosya ile farklarını görebiliyorsun. Özellikle commit açıklamalarını yazarken faydalı oluyor.

Source control ile bağlantılı ürünlerin (code review, IDE vb.) Subversion desteği var, VSS desteği yok. Microsoft bile VSS desteğini kesti.

Tipik sorun: VSS'ten dokümanları/kodu kendi bilgisayarına get latest yaptıktan sonra check out etmeye erinip o dokümanı edit edip v2 diye save edip sonra VSS'ten orjinali check out edip v2'yi rename edip orjinalin üzerine yazıp sonra check in etmek mümkün (bunu ben de yapıyorum bazen). Özellikle bir word belgesi açmış ve okurken birşeyi değiştirmek istemişsen önce Word’u kapat, sonra VSS’i aç, sonra check out et (word açıkken check out edemezsin), sonra word’ü aç, sonra değişiklik yapıp kaydet, word’ü kapat, VSS’e dön, check in et adımlarını takip etmelisin. Böyle durumlarda genellikle word belgesini farklı bir isimle save eder, VSS’ten check out edip edit ettiğim dosyayı rename eder, sonra VSS’e check in yaparım. Eğer dokümanı sizden başka kimse edit etmiyorsa sorun yok. Ama eğer sizden başka birisi siz get latest yaptıktan sonra dokümanı edit etmiş ve siz dokümanı check out etmeden check in yapmışsa o değişiklikler kaybolacaktır, VSS sizi uyarmayacaktır. O nedenle her zaman için check out edilen doküman üzerinden edit işlemlerini yapmak, override etmemek gerekir. Subversion'da böyle bir sorun yok çünkü subversion sen commit etmek istediğinde dokümanın değişmiş olduğunu söyler, senden merge yapmanı ister.

Bağlantılar:
Music: Englishman in New York - Arranged and performed by Igor Presnyakov

No comments: