1. Versiyon Kontrol Sistemleri
Büyük
olsun yada küçük olsun tüm şirketlerde, şirket içerisindeki
dökümanların akışının ve arşivlenmesinin kontrolü için kullanılan bir
sistem vardır. Bu sistem bilgisayar ortamında çalışan bir programdan
yada belgeleri raflarda arşivleyen ve belge akışını sağlayan kişilerden
oluşabilir.
Bu
amaçla kullanılan bilgisayar programlarına en çok yazılım şirketlerinde
rastalanmaktadır. Çünkü yazılımcılar gün içinde sürekli kodlarda ufak
değişiklikler yapmaktadırlar. Gerektiğinde dosyaları eski tarihteki
versiyonlarına geri döndürmektedirler. Bunları yaparken diğer
yazılımcıların etkilenmemesi gerekmektedir. İşte bu anda devreye giren
bu programlar bir dosya üzerinde farklı kullanıcılar tarafından aynı
anda yapılan değişikliklerin birbirini yok etmesini engeller.
Günümüzde
yazılım şirketlerinde çoğunlukla CVS (Concurrent Versions System),
Subversion ve MS SourceSafe sistemleri kullanılmaktadır. Özellikle CVS
sistemi açık kaynak kodlu (Open Source) bir proje olduğu için açık
kaynak kodlu olarak geliştirilen projelerde kullanılmaktadır. Bu tür
projelere http://sourceforge.net/adresinden ulaşabilirsiniz.
2. Subversion Sistemi
2000 yılından önce Collabnet firması ( http://www.collab.net/)
CVS'e alternatif bir versiyonlama sistemi geliştirmeye kararverir. İlk
geliştirilen SourceCast sistemi temelde CVS sistemini kullanmaktaydı.
Bu nedenle CVS sisteminde var olan kısıtlamalar bu yeni sistemde de
görüldü. Bunun üzerine Collabnet firması tarafından CVS'den daha iyi
bir sistem geliştirilmeye karar verildi.
14
aylık kodlama döneminden sonra geliştirilen Subversion sistemi 31
Ağustos 2001 tarihinde hizmet vermeye başladı. Açık kaynak kodlu (Open
Source) olan Subversion sistemi ücretsiz olarak indirilebilir,
kodlarında istenilen değişiklik yapılabilir.
3. Subversion Sisteminin Özellikleri
CVS sistemi sadece dosyaları versiyonlar. Subversion sistemi ise dosyalarla birlikte klasörlerinde versiyonlanmasını sağlar. Yapılan
değişikliler ya tümü birden gönderilir ya da azar azar gönderilir. Bu
özellik uygulama geliştiricilerin yapılan değişiklikleri bir yığın
olarak sunucuya göndermesini sağlar. Böylece değişikliklerin sadece bir
bölümünün gönderilmesinden kaynaklanan problemlerin oluşması
engellenmiş olunur. Subversion sisteminde her dosya ve klasör kendisine ait “ anahtar-değer ” çiftlerinden oluşan özellikler içermektedir. Bu özellikler, dosya içerikleri gibi versiyonlama işlemine tabi tutulabilir.
Subversion
sistemi Apache HTTP sunucusuna ek bir modül olarak eklenebilir. Bu
özellik Subversion sistemine kararlılık ve farklı platformlarda
çalışabilirlilik açısında büyük avantaj kazandırmaktadır. Böylece
Subversion sistemi, entegre edildiği sistemin sağladığı güvenlik,
kullanıcı kontrolü gibi servisleri kullanabilir duruma gelir.
4. Subversion Kurulumu
Subversion sisteminin kurulumunu Windows işletim sistemi üzerinde gerçekleştireceğiz. Bunun için http://subversion.tigris.org/
adresi üzerinden svn paketini indirmeniz gerekmektedir. İlgili Windows
Binary paketini istediğiniz dağıtıcıya göre indirebilirsiniz. İndirme
işlemi bittikten sonra kurulum dosyasını çalıştıralım. Önümüzde kurulum
adımlarını gösteren pencere çıkacaktır. Burada gerekli işlemleri
yaptıktan ve Subversion sistemini kuracağımız dizini belirttikten sonra
kurulum gerçekleşecektir. Kurulumu test etmek için “Command Prompt” da
yazalım. Çalıştırdığımızda aşağıdaki gibi bir sonuç alırız.
Şekil – 1 : Subversion sistemi
Subversion
sistemi çalıştığına göre kaynak kodların ve versiyonlama işlemi ile
ilgili bilgilerin tutulacağı bir tane depo (repository) oluşturalım.
Bunun için aşağıdaki gibi bir komut çalıştırmamız gerekiyor.
| svnadmin create c:repository |
Bu işlem sonrasında Şekil-2 deki gibi dizin yapısı oluşur.
Şekil-2 : “svnadmin create” komutunun etkisi
Şimdi sıra var olan bir projeyi depoya (repository) eklemeye geldi. “C:TEMP” dizini altında file_1.txt , file_2.txt , file_3.txt ve file_4.txt dosyalarından oluşan “ project1” isimli projeyi depoya ekleyelim. Proje ekleme işlemleri için “ svn import “ komutu kullanılır.
| svn import --message " " c:tempproject1 file:///c:/repository/project1 |
Komut sonucunda aşağıdaki ekran karşımıza gelir.

Şekil -3 : Var olan bir projenin depoya (repository) eklenmesi
Subversion
sistemi yeni oluşturulmuş bir depoya (repository) dosya ya da klasör
eklendiğinde değişiklik (revision) numarasını 1 yapar. Daha sonra
yapılacak olan değişiklikler sonucu değişiklik (revision) değeri
artacaktır. (Değişiklik değeri ile ilgili daha sonraki yazılarda
detaylı şekilde değinilecektir.) Subversion dosyalar üzerinde yapılmış
olan değişiklikleri değişiklik (revision) değerine göre kontol eder.
“Project1” isimli projenin depoya (repository) eklenip eklenmediğine bakalım.
| svnlook tree c:repository |
komutunu çalıştırdığımız zaman Şekil-4'de ki gibi depoya (repository) eklenenleri görebiliriz.
Şeklik - 4 : Depoda (repository) var olanların listesi
5. Apache HTTP Server'ının Kurulum
Subversion sisteminin Apache Server ile entegrasyonunu Apache Server'ın 2.0.49 versiyonunda gerçekleştireceğiz. Önce http://httpd.apache.org/download.cgisitesinden
Windows işletim sistemi için ilgili Apache Server'ı indirelim. Kurulum
programını çalıştırarak kurulumu gerçekleştirdikten sonra “...Apache GroupApache2conf” dizini altında bulunan httpd.conf dosyasında birkaç değişiklik yapmamız gerekiyor.
Httpd.conf dosyasında aşağıdaki satırın başındaki ‘ # ' işaretini kaldırarak satırı aktif yapalım.
#LoadModule dav_module modules/mod_dav.so
Bu satırdan sonra yeni bir satıra
LoadModule dav_svn_module modules/mod_dav_svn.so
ekleyelim.
Şimdi Subversion sistemini kurduğumuz dizindeki “httpd” klasörü içerisindeki “mod_dav_svn.so” dosyasını “...Apache GroupApache2modules” dizinine kopyalayalım.
“ httpd.conf ” dosyasısının en sonuna
| DAV svn SVNPath c:/repository/ |
tanımlamasını yapalım ve dosyayı kaydedelim.
Apache Server'ını başlattıktan sonra bir web görüntüleyicisinde (web browser) http://sunucu_ismi/repositorybağlantısını yazdığımızda Şekil-5 teki gibi depoya (repository) eklenenleri dizin yapısı şeklinde görüntüler.
Şekil-5 Depodakilerin (repository) görüntülenmesi
Subversion sistemi ile Apache Http sunucusunu entegrasyonunu gerçekleştirdik.
6. Projeyi Kullanıcı Makinasına İndirmek
Depodaki bir projeye dahil olmak için önce bu projenin kullanıcı makinasına depodan çekilmesi gerekiyor. Bunun için “ svn checkout ... ” komutu kullanılır. Bu işlemi http üzerinden gerçekleştirmek için aşağıdaki komutu çalıştıralım.
| svn checkout http://localhost/repository/project1 c:pro_1 |
Burada “ http://localhost/repository/project1“ adresindeki dosya ve dizin yapısını “ c:pro_1 ” altına kopyalar.
Şekil-6 Depodaki projenin kopyalanması
Buradaki A harfleri ilgili dosyanın eklendiğini göstermektedir.
Dizin yapısı Şekil-7 deki gibidir.
Şekil-7 Kullanıcı makinada oluşan dizin yapısı
Projeyi kopyaladığımızda otomatik olarak “ .svn ”
klasörü oluşur. Bu klasör içerisinde her değişiklik (revision)
numarasına ait değişiklikler bulunmaktadır. Ayrıca kullanıcının yaptığı
yerel değişiklikler burada saklanmaktadır. Kullanıcı bilgisayar ağına
bağlı olmadığı zamanlar yaptığı değişiklikleri, bilgisayar ağına
bağlandığında depoya (repository) yükleyebilir. Bu esnada gerekli tüm
bilgiler “.svn” içerisinden alınmaktadır.
Taner Diler
taner.diler[et]gmail.com
1. Versiyon Kontrol Sistemleri
Büyük
olsun yada küçük olsun tüm şirketlerde, şirket içerisindeki
dökümanların akışının ve arşivlenmesinin kontrolü için kullanılan bir
sistem vardır. Bu sistem bilgisayar ortamında çalışan bir programdan
yada belgeleri raflarda arşivleyen ve belge akışını sağlayan kişilerden
oluşabilir.
Bu
amaçla kullanılan bilgisayar programlarına en çok yazılım şirketlerinde
rastalanmaktadır. Çünkü yazılımcılar gün içinde sürekli kodlarda ufak
değişiklikler yapmaktadırlar. Gerektiğinde dosyaları eski tarihteki
versiyonlarına geri döndürmektedirler. Bunları yaparken diğer
yazılımcıların etkilenmemesi gerekmektedir. İşte bu anda devreye giren
bu programlar bir dosya üzerinde farklı kullanıcılar tarafından aynı
anda yapılan değişikliklerin birbirini yok etmesini engeller.
Günümüzde
yazılım şirketlerinde çoğunlukla CVS (Concurrent Versions System),
Subversion ve MS SourceSafe sistemleri kullanılmaktadır. Özellikle CVS
sistemi açık kaynak kodlu (Open Source) bir proje olduğu için açık
kaynak kodlu olarak geliştirilen projelerde kullanılmaktadır. Bu tür
projelere http://sourceforge.net/adresinden ulaşabilirsiniz.
2. Subversion Sistemi
2000 yılından önce Collabnet firması ( http://www.collab.net/)
CVS'e alternatif bir versiyonlama sistemi geliştirmeye kararverir. İlk
geliştirilen SourceCast sistemi temelde CVS sistemini kullanmaktaydı.
Bu nedenle CVS sisteminde var olan kısıtlamalar bu yeni sistemde de
görüldü. Bunun üzerine Collabnet firması tarafından CVS'den daha iyi
bir sistem geliştirilmeye karar verildi.
14
aylık kodlama döneminden sonra geliştirilen Subversion sistemi 31
Ağustos 2001 tarihinde hizmet vermeye başladı. Açık kaynak kodlu (Open
Source) olan Subversion sistemi ücretsiz olarak indirilebilir,
kodlarında istenilen değişiklik yapılabilir.
3. Subversion Sisteminin Özellikleri
CVS sistemi sadece dosyaları versiyonlar. Subversion sistemi ise dosyalarla birlikte klasörlerinde versiyonlanmasını sağlar. Yapılan
değişikliler ya tümü birden gönderilir ya da azar azar gönderilir. Bu
özellik uygulama geliştiricilerin yapılan değişiklikleri bir yığın
olarak sunucuya göndermesini sağlar. Böylece değişikliklerin sadece bir
bölümünün gönderilmesinden kaynaklanan problemlerin oluşması
engellenmiş olunur. Subversion sisteminde her dosya ve klasör kendisine ait “ anahtar-değer ” çiftlerinden oluşan özellikler içermektedir. Bu özellikler, dosya içerikleri gibi versiyonlama işlemine tabi tutulabilir.
Subversion
sistemi Apache HTTP sunucusuna ek bir modül olarak eklenebilir. Bu
özellik Subversion sistemine kararlılık ve farklı platformlarda
çalışabilirlilik açısında büyük avantaj kazandırmaktadır. Böylece
Subversion sistemi, entegre edildiği sistemin sağladığı güvenlik,
kullanıcı kontrolü gibi servisleri kullanabilir duruma gelir.
4. Subversion Kurulumu
Subversion sisteminin kurulumunu Windows işletim sistemi üzerinde gerçekleştireceğiz. Bunun için http://subversion.tigris.org/
adresi üzerinden svn paketini indirmeniz gerekmektedir. İlgili Windows
Binary paketini istediğiniz dağıtıcıya göre indirebilirsiniz. İndirme
işlemi bittikten sonra kurulum dosyasını çalıştıralım. Önümüzde kurulum
adımlarını gösteren pencere çıkacaktır. Burada gerekli işlemleri
yaptıktan ve Subversion sistemini kuracağımız dizini belirttikten sonra
kurulum gerçekleşecektir. Kurulumu test etmek için “Command Prompt” da
yazalım. Çalıştırdığımızda aşağıdaki gibi bir sonuç alırız.
Şekil – 1 : Subversion sistemi
Subversion
sistemi çalıştığına göre kaynak kodların ve versiyonlama işlemi ile
ilgili bilgilerin tutulacağı bir tane depo (repository) oluşturalım.
Bunun için aşağıdaki gibi bir komut çalıştırmamız gerekiyor.
| svnadmin create c:repository |
Bu işlem sonrasında Şekil-2 deki gibi dizin yapısı oluşur.
Şekil-2 : “svnadmin create” komutunun etkisi
Şimdi sıra var olan bir projeyi depoya (repository) eklemeye geldi. “C:TEMP” dizini altında file_1.txt , file_2.txt , file_3.txt ve file_4.txt dosyalarından oluşan “ project1” isimli projeyi depoya ekleyelim. Proje ekleme işlemleri için “ svn import “ komutu kullanılır.
| svn import --message " " c:tempproject1 file:///c:/repository/project1 |
Komut sonucunda aşağıdaki ekran karşımıza gelir.

Şekil -3 : Var olan bir projenin depoya (repository) eklenmesi
Subversion
sistemi yeni oluşturulmuş bir depoya (repository) dosya ya da klasör
eklendiğinde değişiklik (revision) numarasını 1 yapar. Daha sonra
yapılacak olan değişiklikler sonucu değişiklik (revision) değeri
artacaktır. (Değişiklik değeri ile ilgili daha sonraki yazılarda
detaylı şekilde değinilecektir.) Subversion dosyalar üzerinde yapılmış
olan değişiklikleri değişiklik (revision) değerine göre kontol eder.
“Project1” isimli projenin depoya (repository) eklenip eklenmediğine bakalım.
| svnlook tree c:repository |
komutunu çalıştırdığımız zaman Şekil-4'de ki gibi depoya (repository) eklenenleri görebiliriz.
Şeklik - 4 : Depoda (repository) var olanların listesi
5. Apache HTTP Server'ının Kurulum
Subversion sisteminin Apache Server ile entegrasyonunu Apache Server'ın 2.0.49 versiyonunda gerçekleştireceğiz. Önce http://httpd.apache.org/download.cgisitesinden
Windows işletim sistemi için ilgili Apache Server'ı indirelim. Kurulum
programını çalıştırarak kurulumu gerçekleştirdikten sonra “...Apache GroupApache2conf” dizini altında bulunan httpd.conf dosyasında birkaç değişiklik yapmamız gerekiyor.
Httpd.conf dosyasında aşağıdaki satırın başındaki ‘ # ' işaretini kaldırarak satırı aktif yapalım.
#LoadModule dav_module modules/mod_dav.so
Bu satırdan sonra yeni bir satıra
LoadModule dav_svn_module modules/mod_dav_svn.so
ekleyelim.
Şimdi Subversion sistemini kurduğumuz dizindeki “httpd” klasörü içerisindeki “mod_dav_svn.so” dosyasını “...Apache GroupApache2modules” dizinine kopyalayalım.
“ httpd.conf ” dosyasısının en sonuna
| DAV svn SVNPath c:/repository/ |
tanımlamasını yapalım ve dosyayı kaydedelim.
Apache Server'ını başlattıktan sonra bir web görüntüleyicisinde (web browser) http://sunucu_ismi/repositorybağlantısını yazdığımızda Şekil-5 teki gibi depoya (repository) eklenenleri dizin yapısı şeklinde görüntüler.
Şekil-5 Depodakilerin (repository) görüntülenmesi
Subversion sistemi ile Apache Http sunucusunu entegrasyonunu gerçekleştirdik.
6. Projeyi Kullanıcı Makinasına İndirmek
Depodaki bir projeye dahil olmak için önce bu projenin kullanıcı makinasına depodan çekilmesi gerekiyor. Bunun için “ svn checkout ... ” komutu kullanılır. Bu işlemi http üzerinden gerçekleştirmek için aşağıdaki komutu çalıştıralım.
| svn checkout http://localhost/repository/project1 c:pro_1 |
Burada “ http://localhost/repository/project1“ adresindeki dosya ve dizin yapısını “ c:pro_1 ” altına kopyalar.
Şekil-6 Depodaki projenin kopyalanması
Buradaki A harfleri ilgili dosyanın eklendiğini göstermektedir.
Dizin yapısı Şekil-7 deki gibidir.
Şekil-7 Kullanıcı makinada oluşan dizin yapısı
Projeyi kopyaladığımızda otomatik olarak “ .svn ”
klasörü oluşur. Bu klasör içerisinde her değişiklik (revision)
numarasına ait değişiklikler bulunmaktadır. Ayrıca kullanıcının yaptığı
yerel değişiklikler burada saklanmaktadır. Kullanıcı bilgisayar ağına
bağlı olmadığı zamanlar yaptığı değişiklikleri, bilgisayar ağına
bağlandığında depoya (repository) yükleyebilir. Bu esnada gerekli tüm
bilgiler “.svn” içerisinden alınmaktadır.
Taner Diler
taner.diler[et]gmail.com