Subversion (SVN) Kurulumu ve Kullanımı

Merhaba,

Yeni bir projeye başlarken, kod yazma aşamasına gelmeden önce projenin modellenmesi, veritabanı mimarisinin oluşturulması gibi öne çıkan konuların ele alındığını birçoğumuz biliyoruz. Ama yine bunlardan da önce çalışma ortamımızın hazırlanması gerekiyor. Profesyonel bir şekilde proje yönetebilmek ve süreçleri ilerletebilmek için versiyon kontrol yapısının oluşturulması ölümcüldür.

Nedir bu versiyon kontrol?

Versiyon kontrol basitçe bir dosya veya dokümandaki değişiklikleri takip edebileceğimiz sistemlerdir. Bir projede birden fazla çalışan olabilir ve kimin ne zaman hangi değişikliği yaptığı bilgisine erişmeye ihtiyaç duyabiliriz. Yeni geliştirmeler ile karşılaştığımız çeşitli problemlerde geçmişe dönebilir ve projenin o zamanki halini inceleyebiliriz. Versiyon kontrol sistemini basitçe açıklamaya çalıştım. Tanımlar çoğaltılabilir.

Şimdi Linux üzerinde SVN kurulumunu ve kullanımını anlatmaya çalışacağım (İşletim sisteminizede Apache kurulu olduğu varsayılmıştır).

sudo apt-get install subversion libapache2-svn

Yukarıdaki komutu çalıştırarak SVN kurulumunu başlatıyoruz ve kolayca tamamlanıyor. An itibari ile artık SVN kurulumu tamamlandı. Her proje için ayrı bir repository oluşturmak en mantıklısıdır. Bu bağlamda tüm repository projelerini tutacağımız bir dizin belirlememiz gerekiyor. Ben /var/svn dizinini kullanmaya karar verdim.

cd /var
mkdir svn

Yukarıdaki komutları çalıştırarak /var dizini altına “svn” isimli bir klasör oluşturmuş olduk. Şimdi projemiz için bir repository oluşturalım.

svnadmin create /var/svn/project

Yukarıdaki komutu çalıştırdıktan sonra “project” isimli yeni bir repository oluşturmuş oluyoruz. Şimdi boş projemizi checkout ederek çalışma ortamımızı yaratmak adına son adımımızı atıyoruz. Benim işletim sistemimde projelerimi barındırdığım dizin /var/www/sites

cd /var/www/sites
svn co file:///var/svn/project

Yukarıdaki komutları çalıştırdığınızda /var/www/sites dizini altına “project” isimli bir klasörün oluştuğunu göreceksiniz. Yine bu klasörün içine girip bakacak olursanız “svn” isimli gizli bir klasör oluştuğunu göreceksiniz. Standar “hello word” mesajımızı vermek üzere index.php mizi oluşturacağız 😀

cd /var/www/sites
touch index.php
nano index.php

(Ben nano editor kullanıyorum. Siz ister konsol editorlarinden isterseniz Zend Studio,NetBeans gibi editorlerle index.php oluşturabilir ve düzenleyebilirsiniz)

“Hello word” yazıp kaydediyoruz ve çıkıyoruz. An itibari ile ekrana “Hello Word” yazdıran bir php dosyamız oldu.

Yeni eklediğimiz dosyanın SVN’ye eklenmesi

svn add index.php
svn commit -m 'index.php eklendi'

Yukarıda index.php yi eklemek üzere SVN’yi uyardık ve commit ettik. İlk commitimizi yapmış olduk. Dosyanızda yeni bir değişiklik yaparsanız bunu görmek için aşağıdaki yönergeyi izleyelim.

svn status

Değişiklik bulunan tüm dosyalar gelecek. Değişiklik yaptıysanız dosyanın başına “M” harfi gelmiş olacak. Bu dosyanın modified edildiğini belirdir.

Bir dosyanın silinmesi

svn delete index.php

Projenin güncellenmesi

svn update

 

SVN ile ilgili anlatılabilecek çok şey var 😀 Zamanla eklemeye çalışacağım.

Selamlar.

 

Subversion (SVN) vs Git

Bu konu sizin aslında, “hangi versiyon kontrol sistemini kullanmalıyım?” sorunuza da yanıt olabilecek bir niteliktedir.

Subversion (Svn) ve Git Versiyon Kontrol Sistemleri Karşılaştırması

Takımınız için en iyi yazılım deposunu (repository) seçerken, bir takım önemli faktörler vardır. SVN (Subversion) geçtiğimiz yıllarda üretimde fiili olarak bir standart haline geldi ve kullanıldı. Ancak, daha sonradan hayatımıza Git diye bir şey girdi.

Git, Linus Torvalds tarafından Linux çekirdek geliştirilmesi amacıyla geliştirilmiş versiyon kontrol sisteminin dağıtılmış versiyonudur. Yıllar içerisinde, yazılım geliştirme amacıyla kullanılmış ve özellikle Open Source projelerin oluşturulmasında rol alarak da çok büyümüştür. Git, çoğu takım için daha iyi bir çözüm olmasına rağmen, SVN ile kıyaslandığında azıcık daha öğrenmesi zor olarak nitelendirilebilir.

Svn & Git farklarının objektif olarak özeti

  • Git Svn den epeyce hızlıdır.
  • SVN ile bir alt ağacı(subtree) indirip çalışabilirsiniz, ancak Git’te tüm projeyi klonlamanız gerekir. Bu klonlama ile kendinize geçmişi dahil bir kopya üretmiş olursunuz.
  • Git depoları, SVN ye kıyasla epeyce daha küçüktür. Örneğin Mozilla projesi için 30 kat daha küçüktür)
  • Git, baştan itibaren dağıtma amaçlı tasarlandığından, her geliştiriceye olabildiğince yerel kontrol imkanı sağlar. (örneğin bir şeyi yapıp kendinize commit edebilirsiniz. )
  • Git branch’ları (yan dalları) , SVN’e göre basit ve daha az kaynak harcarlar.
  • Git branch’lar kendi geçmişini tutarlar.
  • Git branchlar üzerinde daha çok denetim ve karıştırma (merge) imkanı sağlar.
  • Git depo dosyaları basittir. Tamir etme vb işlemlerinde ihtimaliz daha yüksektir.
  • SVN depolarını merkezi olarak yedeklemek daha basittir.
  • Git depo klonları, full bir klondur. Yani onun üzerinden yeni bir repo yapabilirsiniz.
  • SVN nin kullanıcı arayüzü, Git’inkinden daha gelişmiştir.
  • SVN nin versiyonlarında (revisions) dolaşmak 1,2,3,… şeklinde isim verdiğinden çok daha basittir. Git, ne idüğü belirsiz SHA-1 hash’ler kullanıyor.

Kaynaklar : GitSvnComparison, subversion_git_comparison