Windows Üzerinde Kaynak Kod Versiyon Kontrol Sistemi ve CVSNT
06.06.2005 - 01:41 | Atakan E.  | Aklımda Kalanlar  | 3 Yorum |  Tavsiye Et

Ö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?

    CVSConcurrent 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

  1. CVSNT yi kurmak
  2. Dosya havuzlarını oluşturmak (Repository)
  3. Güvenlik gruplarını oluşturmak & izinleri tanımlamak
  4. CVSNT ye ulaşmak
  5. TortoiseCVS ile ilk projemizi havuza eklemek.
  6. Detaylı Ayarlar
  1. Kurulum : Son versiyon (stable/tutarlı sürüm olsun) CVSNT kurulumunu http://www.march-hare.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 Files\CVSNT\genkey.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.
     
  2. 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.
     
  3. 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.
     
  4. CVSNT'ye ulaşmak (client) : Dosya havuzunuza istemci (client) makinalarınızdan ulaşmak için bir kaç metod kullanabilirsiniz.
    1. 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 :)
    2. 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.
    3. 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 :)
       
  5. 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.
     
  6. 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-
06.06.2005

 


YORUMLAR :  3 Yorum yapıldı.
Ortalama Puan=3,3  
1 - Yusuf YILMAZ ( 5 Puan )
30.04.2008 13:29:22
Tek kelimeyle enfes özetlenmiş.
2 - Yusuf KARABULUT ( 5 Puan )
01.08.2007 11:48:22
İşime yaradı... Teşekkür ederim...
3 - Hakan ( 0 Puan )
08.06.2005 00:47:32
pek bisi anlamasam da bu yarali oldugunu varsaydigim bilgiler icin tesekkuru bir borc bilirim


YORUM YAZIN
Adınız Soyadınız
 
e-Posta
Verdiğiniz Puan
Yorumunuz
Beni Hatırla
Güvenlik Numarası
Güvenlik numarasını giriniz
Son Yorumlar
yavuz yılmaz 11/10 14:23
Menan Cinleri
yavuz yılmaz 11/10 14:21
Menan Cinleri
yavuz yılmaz 11/10 14:19
Menan Cinleri
pinar şenpeker 07/10 18:23
"Aç Kal Budala Kal"
pinar şenpeker 07/10 18:22
"Aç Kal Budala Kal"
baluuk 05/10 12:26
Menan Cinleri
baluuk 05/10 12:24
Menan Cinleri
baluukk 05/10 12:23
Menan Cinleri
yusuf sadi 04/10 00:54
Menan Cinleri
ben kimim?:))) 30/09 13:30
Menan Cinleri
Son Foto Yorumlar
meriyyyyyyy 04/10 20:17
Zeyrek Camii
meriy baetni 04/10 20:12
Zeyrek Camii
rukiye ileri 01/10 18:03
Sultanahmet Camii
önemli değil ( erzurumluyum ) 07/09 14:18
Çifte Minareli Medrese
s@ns@r 22/08 22:06
Nemrut Dağı Kalıntıları
s@ns@r 22/08 22:04
Zeyrek Camii
nergis 09/08 15:38
Bursa Ulu Camii
ÇİĞDEM 08/07 21:20
Artemis Tapınağı
ÇİĞDEM 08/07 21:17
Aspendos 3
ÇİĞDEM 08/07 21:15
Aşık Paşa Türbesi
Yazarlar
Blog Arşivi