Merkezi ve Dağıtık Sistemler

Merkezi sistemlerde tüm bilgi bir noktada saklanır. İstemciler ağ üzerinden depo üzerinde yaptıkları değişiklikler gönderirler. Bu değişiklikler merkezdeki depoya uygulanır ve depo yeni bir hal alır. Değişikliklerden haberdar olmak için işlemcilerin merkeze uğraması gerekir. Sürümler arasındaki farkları sorgulamak gibi temel bir takım işlemler için hep merkezdeki bilgilere danışılması gerekir.

Dağıtık sistemlerde ise bütün üstbilgiler (önceki sürümler v.b.) yerel bilgisayarda saklanır. Bu nedenle bir merkeze ihtiyaç duymadan tüm işlemleri yapabilmeniz mümkündür.

Çalışmalarınızla ilgili tüm üstbilgilerin bir merkezde saklanması, veri yedeklemenin önemini arttırır. Halbuki bunun aksine, dağıtık sistemlerde bir depoyu alan her geliştirici çalışmanın bütün kopyasına sahiptir, dolayısı ile ne kadar geliştirici varsa, o kadar yedekleme yaparsınız. Bu nedenle geliştiriciler birbirlerine de bağımlı değillerdir.

  • Dağıtık Versiyon Kontrol Sistemleri : Git , Mercurial
  • Merkezi Sistemler : Svn (Subversion)


Svn vs Git

SVN sisteminde, geliştiricilerin erişebildiği uzak bir sunucuda versiyonlama yapılır. Birden fazla kullanıcının yaptığı ve onayladığı değişiklikler (commit), bir revizyon numarasıyla SVN sunucusunda kayıt altına alınır. SVN sisteminde kullanıcılar yaptıkları değişiklikleri kayıt altına alabilmeleri yani commit edebilmeleri için, o anda SVN sunucusuna erişim sağlanabiliyor olmalıdır. Yani SVN sisteminde lokal commit yoktur ve SVN sunucu her daim ayakta olmalıdır.

Git’in en büyük farkı merkezi değil, dağıtık olması. Bu şu anlama geliyor tek merkezli bir yapı yerine dağıtık bir yapıya sahip bir sistem kullanılır. Dağıtık sistemlerdeki avantaj sistemi kullanmak için merkezi bir depoya sahip değildir, kullanıcı internetin olmadığı yerlerde sistemi kullanma imkanı sağlıyor. İnternete veya sisteme bağlandığımızda değişiklikler sisteme aktarılır. Bu bize çok büyük esneklik sağlar.
Dağıtık Versiyon Kontrol Sistemlerinin en yaygın kullanılanı ve bilineni Git’ dir. Bu kadar yaygın ve bilinen olmasının en temel sebebi github.com gibi bir host servise imkan sunması. Git sistemi, SVN versiyon kontrol sistemine göre daha karmaşık kod kümesine sahip, bu nedenle öğrenme eğrisi biraz dik. Elbette bir IDE ile çalışılıyorsa, bu komutları yönetmek daha kolay bir hal almaktadır.

Git vs Stash
 
  • Stash'in Git'e göre en büyük üstünlüklerinden biri "user management" a izin vermesidir. Çünkü Git üzerinde kullanıcı işlemleri ve bunun güvenliği "key" üzerinden yapıldığından, herhangi bir işlem gerektiğinde konfigürasyon gerekmektedir. Stash bize yönetim kolaylığı sağlamaktadır.
  • Stash bizi bu zorluklardan kurtartıp LDAP ile bağlantı sağlıyor.
  • Stash raporlamaya olanak vermektedir. Hangi depoda ne değişmiş, ne eklenmiş, kimin tarafından yapılmış vb. herşeyi görebiliyoruz.
  • Stash'te yetkilendirmede bir üst seviye gelmiştir.