Windows Üzerinde Kaynak Kod Versiyon Kontrol Sistemi ve CVSNT.
ae, Pazartesi, 6 Haziran 2005 (03:34 TSI) (7566 okuma)
Özellikle yazılım geliştirme dünyasında iseniz, yazdığınız kodların güvenilir
bir şekilde saklanması, versiyonların takip edilmesi, kodun gelişimine katkıda
bulunanların ve kodun kontrol altında tutulması ihtiyacınız doğmuştur.
Windows ortamında kaynak kod güvenliğini ve versiyonlama takibini yapabilmek
için bir kaç alternatifiniz bulunuyor. Özellikle
MS ürünleri ile yazılım gerçekleştiriyor iseniz mutlaka karşınıza çıkmış olan
Visual Source Safe,
açık kod dünyasından
RCS
,
SVN,
CVS ve
CVSNT
Yabancı terimlerin Türkçeye çevrilmesindeki bazı güçlüklerden dolayı
açıklamaların başında Türkçe manasını verip metin içinde orjinal kısaltmaları
kullanmaya çalışacağım.
RCS Nedir?
RCS (Revision
Control
System),
GNU.org'da da belirtildiği
üzere dosya üzerinde revizyonları takip edebilmek üzere geliştirilmiş bir
kontrol sistemidir.
CVS Nedir?
CVS ,
Concurrent
Versions
System
, açık kaynak olarak geliştirilmiş olan kaynak kod kontrol sistemidir. Üzerine
inşaa edildiği
RCS (Revision
Control
System)'den
bir dosyayı birden fazla kişinin aynı anda değiştirmesine izin vermesi, sadece
dosyaların değil dizinler ve altındaki tüm dosyaları bir hamlede kontrol
sisteminden çekip kullanabilmesi, üzerlerinde fark alma gibi işlemler
yapabilmesi ve kolay kullanımı gibi ana farklar ile ayrılmaktadır. RCS ve CVS
nin kendine göre kullanım alanları olsa da, aralarında karşılaştırma
yapıldığında CVS ön sırada bulunmaktadır.
CVS nin resmi sitesi olan
CVSHome.org adresinde yeni başlayanlar için "
Yeni
başlayanlar için CVS" gibi birbirinden yararlı dökümanlara ulaşabilirsiniz.
Amacımız CVS sisteminin Windows üzerinde nasıl uyuglanabilir olduğunu aktarmaya
çalışmak olduğu için
CVS'nin kısa bir tanımının yeterli olduğunu
düşünüyorum.
CVSNT Nedir?
CVS'den türemiş
güvenlik, kullanılabilirlik ve
daha bir çok özelliği ile ayrılan ve kaynak kontrol alanında pazarın lideri
olan açık kaynak kodlu bir CVS sürümüdür. Bence bizler için en yararlı olan
özelliği CVSNT ile beraber gelen UTF8/Unicode dil desteği ile Türkçe isimli
dosyalarımızı rahatlıkla saklayabilmemiz ve Windows kullanıcı adı ve
şifrelerimiz ile sisteme SSL/SSH kullanarak erişebilmemiz.
Neden CVSNT?
Önce Source Safe vardı :) Microsoft teknolojileri ile
çalışmayı alışkanlık edindiğimiz için epey bir süre
Visual
Source
Safe (
VSS) kullandık ve/veya kullanmaya çalıştık. Kendince
güzellikleri olsada temel anlamda VSS'in hem dosya koruma, hem güvenlik
taraflarında problemleri vardı.
Mesela standart olarak belli sürelerde bir
göçebilirdi, veya yetki tanımlamanız cidden zor olabilirdi. En kötüsü Repository
dediğimiz dosya havuzu tamamen kendine özgü binary bir sistem ile tutulduğu için
her hangi bir göçme durumunda özenle koruduğunuz kodlarınızın, belgelerinizin
geriye dönüşü imkanı imkansız derecede zora giriyordu.
Geçtiğimiz yıl VSS'in son göçüşünde CVS sistemine geçmeye karar verip,
CVSNT de karar kıldık. İnternette araştırarak VSS dosya havuzumuzdan
dosyalarımızı çekebilecek
bir kaç yöntem
bulabildim ama bu alanda işe yarar diye düşündüğüm
Vss2Rcs kurtara
kurtara kaynak kodlarımızın bir kaç sürüm önceki (ilk) versiyonlarını
kurtarabildi. Ne mi yaptık? Allah'tan VSS deki kodlarımızın birer kopyaları
geliştirme makinalarımızda da mevcuttu onları kullanarak beyaz bir sayfa açtık,
o gün bugündür CVSNT ile yolumuza devam ediyoruz. ( İsterseniz bu iş için
VSSExtractor'u da
deneyebilirsiniz.)
CVSNT ile neler yapabiliyoruz? Mesela Windows şifre ve
kullanıcı adlarımızla dosya sistemine gore verilmiş izinlerle erişebileceğimiz
kod havuzlarımıza, şirket içi ağımızdan veya internetten ulaşabiliyoruz.
Ulaşırken SSL/SSH kullanabiliyoruz. Dosya transferleri şifreli olsun ve
sıkıştırılmış olsun diyebiliyoruz. İstediğimiz tarihteki kodlarımızı bir hamlede
çekebiliyor, istediğimiz gibi dosyalara alt versiyonlar (branch, bir örneğin
dosyanızın A işletim sistemi için ayrı, B işletim sistemi için ayrı yazılması
gerekiyor) oluşturabiliyor, gerekirse bir dosyayı aynı anda birden fazla kişi
ile değiştirme hakkını kullanabiliyoruz. (Mesela bir kod kütüphaneniz var ve siz
bir fonksiyonu, arkadaşınız başka bir fonksiyonu değiştirmek istiyorsunuz, bu
durumda VSS'den ve RCS'den ayrılan bu CVS özelliği devreye giriyor.)
CVSNT'ye geçişte tek kaybımız Microsoft Visual Studio
içinde direk VSS bağlantısı imkanımız vardı, artık o yokdu. Fakat bu eksikliği çok
daha akıllı ve güzel bir sistem ile giderdik. Yazının devamında CVSNT ye ulaşım
nasıl sağlanır bulabilirsiniz. (İsterseniz ücretli
bir plugin ile Visual
Studio IDE'si üzerinden CVS/SVN erişimlerinizi yapabilirsiniz.)
CVSNT Kurulumu
Kurulum aslında çok basit, temelde takip edilecek yol
- CVSNT yi kurmak
- Dosya havuzlarını oluşturmak (Repository)
- Güvenlik gruplarını oluşturmak & izinleri tanımlamak
- CVSNT ye ulaşmak
- TortoiseCVS ile ilk projemizi havuza eklemek.
- Detaylı Ayarlar
- Kurulum : Son versiyon (stable/tutarlı sürüm olsun) CVSNT kurulumunu
http://www.cvsnt.com/downloads/
adresinden çekin. Site aynı zamanda paralı başka ürünlerin deneme
sürümlerini de dağıttığı için form üzerinde deneme süresi filan yazabilir,
siz çekinmeyin, CVSNT ücretsiz.
Öncelikle kendinize bir yol haritası çıkarın. Hangi dizine kuracağım, hangi
dosya havuzlarım olacak diye. Dosya havuzu altında daha sonra ayrı ayrı "module/modüller"
(diğer bir deyişle projeler) açabileceksiniz. Her proje bir modüle karşılık
gelecek ve kendisine özgü izinler ile çalışacaktır.
Yukarıdaki adresten indirdiğiniz kurulum dosyanızı çalıştırın, CVSNT nin
nereye kurulacağını ve kurmak istediğiniz protokolleri seçin. Protokollerin
detaylarını şu adreste bulabilirsiniz. Şuan için bilmemiz gereken pserver
protokolünün geri dönüşümü kolay bir şekilde şifrelerimizi gönderdiği bunun
güvensiz olduğu, hatta dosya transferlerimizi ve dosyalarımızın
içeriklerinin "sniffer" vasıtası ile görülebildiği ve kullanacağımız
sserver protokolünün SSL üzerinden şifreleme yaparak tüm
işlemlerimizi güvenle yapmamızı sağladığı. İsterseniz Windows
üzerinde SSH sunucu çalıştırıp SSH protokolü üzerinden de işlemlerinizi
gönül rahatlığı ile yapabilirsiniz.
Kurulumu tamamladı iseniz, Control Panel'e yerleşmiş olan "CVS for NT"nin
balık ikonuna tıklayıp detaylara girebiliriz. Öncelikle yapmamız gereken bir
adet "SSL-Key" üretmek. Bunu isterseniz
OpenSSL kullanarak, ister
CACERT sisteminden
serbestçe ürettirerek, istersenizde komut satırı kullanarak
"C:Program FilesCVSNTgenkey.exe"
vasıtası ile yapabilirsiniz, SSL Anahtarınızı oluştuduktan sonra CVSNT
yönetim panelindeki SSL kısmında SSL Sertifika ve private/özel dosyalarınızı
göstermeniz yukarıda bahsettiğim SSL/:sserver: protokolünü
kullanmanız için yeterli olacaktır.
- Repositories/Dosya Havuzlarını oluşturmak : Dosya havuzlarınızı
kuracağınız dizin seçimi önemli çünkü bundan sonra değerli kodlarınız ve diğer önemli
dosyalarınız o dizinde duracak. Eğer windows üzerinde kuruyorsanız ki bu yazı
windows üzerine kurulumu anlatıyor, NTFS dosya sistemi üzerinde kurmanız
güvenliğiniz için gerekli. Örneğimizi NTFS yapısında olan E: diskimizde
Bizim_CVS isimli bir dizin üzerinde gerçekleştirelim ve içinde
Masaüstü, Web gibi ayrı ayrı havuzlar olsunlar. Masaüstü havuzumuzda adı
üstünde Masaüstü/desktop projelerimiz, Web havuzumuzda ile web
sitelerimiz ile ilgili veya web ile alakadar projelerimiz bulunacak.
CVSNT yönetim panelindeki Repositories ekranına gelin, "Add" tuşu vasıtası
ile dosya havuzunuzun adını ve yerini belirtin.
Yer : E:/Bizim_CVS/Havuz/Masaüstü
Adı : /Masaustu
Açıklama : Masaüstü uygulamalarımız
Bundan sonra "OK" tuşu ile işlemi onaylamaya kalıyor. Aynı işlemleri Web havuzu içinde yapmamız
gerekiyor.
Not: Dosya havuzu altında daha sonra ayrı ayrı "module/modüller"
(diğer bir deyişle projeler) açabileceksiniz. Her proje bir modüle karşılık
gelecek ve kendisine özgü izinler ile çalışacaktır.
- Güvenlik gruplarını oluşturmak : Sistemin en güzel yanlarından
birisi Windows, Active Directory kullancılarınızın dosya sistemindeki
yetkilerine göre projelere erişim izni verebilmesi. Ben bu yöntemi
irdeleyeceğim, sizler CVS in kendi üzerinde gelen
readers,writers,passwd
dosyaları üzerinden güvenliği de kullanabilirsiniz fakat NTFS üzerinden
güvenliği sağlamak hem daha kolay hem çok daha iyi bir güvenlik yapısı
kurmanızı sağlayacaktır.
Öncelikle bilgisayarınızda veya Active Directory sisteminizde
CVS_Yonetim, CVS_MasaustuGelistirici, CVS_WebGelistirici gruplarını
oluşturup içlerine ilgili kullanıcılarınızı ekleyin. Dosya havuzunuzun
bulunduğu dizine gidip (E:Bizim_CVS)
CVS_Yonetim grubu için buraya tam yetki verin (veya kendi istediğiniz
seviyede). E:/Bizim_CVS/Havuz/Masaustu dizinine CVS_Yonetim ve
CVS_MasaustuGelistirici kullanıcılarınızın erişim izinlerini (yazma hakları
ile beraber), web dizinine de CVS_Yonetim ve CVS_WebGelistirici
gruplarınızın için izinlerinizi tanımlayın.
Bu durumda ilgili gruplar sadece izin verdiğiniz dizinlerdeki projelere
ulaşabilecekler ama diğerlerine ulaşamayacaklardır. İzin verme yöntemi ile
alt projelerinize de erişimleri rahatlıkla kısıtlayabilirsiniz.
Not : CVSNT Yönetim ekranında belirtilen "TEMP" dizinine tüm CVS
kullanıcılarınızın tam erişim hakkı olması gerekmektedir.
- CVSNT'ye ulaşmak (client) : Dosya havuzunuza istemci (client)
makinalarınızdan ulaşmak için bir kaç metod kullanabilirsiniz.
- Komut satırı kullanmak.
Bu yöntem ile tüm cvs işlemlerinizi rahatlıkla yapabilirsiniz. Özellikle MS Windows kafa yapısına sahip bir kullanıcı iseniz
olduğunca zor ve görsellikten uzak olacaktır. (tembel de
olabilirsiniz tabi :)
- WinCVS kullanabilirsiniz. Yapısı VSS
kullanıcılarına tanıdık gelecektir. WinCVS, CVS sisteminde yapmak
isteyeceğiniz hemen herşeyi yapmanıza izin verecektir.
Ekran görüntülerine buradan
ulaşabilirsiniz. Bana göre bu kadar karışık ekranlara gerek yok,
tercihim 3. seçenekte.
- Sevgili kaplumbağa Charlie ikonu ile gönlünüze taht kuracak ve genelde
yazılımcılar için sıkıntı olan kodları kaynak kontrol sistemine yollamayı
zevkli hale getirecek olan TortoiseCVS'i
kullanabilirsiniz. TortoiseCVS Windows Gezgini/Explorer ile tam entegre
olur ve değişen, sisteme yeni giren dosyaları rahatlıkla tanımanıza
yardımcı olur.
TortoiseCVS.org sitesinde
detaylı ekran görüntüsünü de bulabilirsiniz. Görüntüyü
bulmuşken çekip
kuruverin :)
- TortoiseCVS ile İlk projemizi havuza eklemek : Gerek WinCVS
gerekse TortoiseCVS yi ilk kullanımınızda "CVS (CVSNT) sunucunuzun" nerede
olduğunu ve güvenlik protokolü, şifre gibi ayarları göstermeniz gerekecek.
Yeni bir modül açma, varolan modülleri alma gibi temel
işlemlerde bu ayarlar zaten önünüze geliyor.
Protocol : SSL (:sserver:)
Server : CVSNT yi kuruduğunuz makina adı (veya ip, hostname)
Port : Network üzerinden erişiyor iseniz CVSNT de belirttiğiniz port.
Dokunmadı iseniz 2401 tcp portu.
Repository Folder: Dosya havuzunuzun adı , (Örneğimize göre /Masaustu)
User Name : /Masaustu ne izinli kullanıcınızın adı
Sisteme
eklemek istediğiniz bir projenizin ana dizinine sağ tıklayıp CVS > Make new
modüle demeniz bu işlem için yeterli. Modül oluşturulduktan sonra aynı
dizine tekrar sağ tıklayarak CVS Add seçeneği ile dosyaları sisteme eklemek,
sonrasında ise gene aynı dizin için CVS Commit seçeneği ile işlemi
onaylamanız gerekecek.
Herhangi bir anda sistemden dosyalarınızı almak için boş bir yerde sağ
tıklayıp CVS Checkout menüsünü kullanabilirsiniz. Varolan projenizdeki
dosyaları CVSNT sistemindeki en son halleri ile güncellemek için UPDATE
menüsü işinize yarayacaktır. Gene dosyaların geçmişleri, hayat hikayeleri
için ilgili dosyaya sağ tıklayıp CVS menüsünden History seçeneğine
ulaşabilirsiniz.
Eğer bir dosyada değişiklik yapmış iseniz ve sistemdeki ile sizdeki
arasındaki farkı bulmak istiyorsanız CVS size text olarak bunun
karşılaştırmanızı yapacaktır. Benim tavsiyem bu işler için biçilmiş kaftan
olan WinMerge'i kullanmanız. WinMerge
dosyalar hatta dizinler arasında detaylı bir karşılaştırma yapmanızı
sağlayacaktır. Üstelik TortoiseCVS ile tam uyumlu çalışıyor.
- Detaylı Ayarlar : CVSNT sisteminizde aşağıdaki linkleri takip
ederek
Dosya tiplerinizi tanımlayabilir,
CVS sistemine giren,
değişen her
dosya için bilgi emaili alabilir,
Web üzerinde CVS yapınızı yayınlayabilir,
detaylı izinler verip, kimi kullanıcıların erişimlerini engelleyebilir, script çalıştırabilirsiniz.
Detaylı ayarlar için DevGuy : Free
Resources for Software Developers sitesini tavsiye ederim.
İçerisinde CVSNT ile ilgili hemen
hemen herşeye ulaşmanız mümkün.
Diğer kaynak kod versiyonlama sistemleri
Eğer CVS kullanmak istemiyor iseniz , MS cephesinden
Visual Source Safe'i
ve yeni gelecek olan kardeşi
VSS
2005'i deneyebilirsiniz.
VSS 2005 için büyük yenilikler getirdiklerini
söylüyorlar fakat bizler
bu listede olan herşeyi yukarıdaki işlemler ile rahat rahat yapabiliyoruz,
hem
güvenilir, hem de bedavaya.
Açıkkod cephesinden ise
SVN
(subversion) ile ilgilenebilirsiniz. SVN kullanacak iseniz ,
TortoiseSVN'de kullanabilirsiniz.
Tabi
CVSNT'nin SVN'e göre onca avantajı varken tercih size kalmış :)
Linkler & Referanslar
Atakan Eser
06.06.2005
http://www.danalar.org/bpi.asp?caid=155&cid=210
Yorumlar yazarlarına aittir. İçeriklerinden hiçbir şekilde sorumlu değiliz.