Windows Üzerinde Kaynak Kod Versiyon Kontrol Sistemi ve CVSNT.

0
ae
Ö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
  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.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.
  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 Eser
06.06.2005
http://www.danalar.org/bpi.asp?caid=155&cid=210

Görüşler

0
ahmetaa
Guzel bir yazi olmus, windows altinda versiyonlamadan bihaber kisiler icin bir baslangic noktasi olusturur umarim.
Burada ufak bir onerim olacak. CVS eski ama gercekten son derece olgun ve guvenilir bir kaynak versiyonlama sistemi. Bugune kadar herhangi bir sorunla karsilasmadan kullandik (kullaniyorduk). Taki yeni is yerinde sunucu olarak NT uzerine CVSNT kurana kadar. Sirket politikasi geregi sunucularda windows kullaniliyor, eh ne yapalim deyip CVSNT'yi kurduk ve calistirdik, bir kac ay sorunsuz ve cok yogun bicimde kullandik. Ama bir gun bir anda kullandigimiz IDE ana CVS modullerini listeleyemez oldu (sadece moduller yerine binlerce dosyayi listeliyor). Ayrica CVSNT cilgin gibi bellek sizdirmaya basladi. Surumu guncelleyince sizinti konusu halloldu ama disaridan modulleri hala listeleyemiyoruz (wincvs'te bu ozellik yok). Ayrica bir modulun altindaki bir binary dosya depoda bir sekilde bozuldu ve guclukle bu hatayi giderebildik. Calisiyor ama acikcasi artik guvenemiyorum. Onceki is yerinde dandik bir makinede linux uzerinden calisiyorduk sorunsuz bicimde. (mozilla projesinin CVS kullandigini da hatirlatirim)
CVSNT'nin subversion'a karsi avantajlari bence son derece su goturur. Kullanici acisindan gosterilen ustunluklerin neredeyse hic anlami yok. Sonucta CVSNT CVS'in temel kisitlamalarini tasiyor. Mesela dosya adi , ya da dizin adi degistiremiyorsunuz. Belki tek ustunlugu Wondows domain login olabilmeniz, ama bunun da kendine gore sorunlari var (ozellikle sirketin sifre degistirme politikasi varsa)

Diyecegim su ki eger CVS kullanacaksaniz (ki CVs artik miadini dolduruyor, Subversion yerimi almaya basladi) ve grup seklinde calisiyorsaniz saglam ama eski bir makineye linux, Solaris ya da FreeBSD kurarak onun uzerinde CVS sunucusunu isletin. Ya da illa sunucuyu windows altinda kullanmak istiyorsaniz windows altinda saglam calisan (Visual Sourcesafe haric) bir versiyonlama sistemi bulun
0
ae
Teşekkür ederim.

Modül listeleme olayını biz TortoiseCVS [www.tortoisecvs.org] kullanarak aşıyoruz. Yazıda da bahsettiğim gibi WinCVS bana biraz karışık geldi. Belkide VSS i hatırlattığı için soğudum. TortoiseCVS içerisinde Fetch List butonu ile rahat rahat modülleri listeleyebiliyor.

Firmamızın CVSNT si w2003 std server üzerinde duruyor, yanında çalışan başka uygulamalar da mevcut. Şimdiye kadar tek bir hata dışında düzgün çalıştı, o da sizinkine benzer bir şekilde tek bir binary (gif/jpeg) dosyı içeri alıp işlemi sonlandırmadığı için boyutunu büyütmek oldu. Bu sorun client tarafındanmı (firewall vardı client üzerinde ekstradan) yoksa CVSNT den mi tam anlayamadım, çokda detayına bakamadım açıkcası.

Bahsettiğiniz şifre değişim politikası bizde de mevcut ama active directory yapısında dosya alıp verme ile problemim olmadı, dışarıdan erişimlerde de gayet mutluyum. VSS den sonra CVSNT rüya gibi geldi :)

Dosya/dizin taşıma ve isim değiştirme işini CVSNT 2.0.55 sonrası sürümlerinde destekliyor, gerçi ben kullanmadım. Yeni TortoiseCVS sürümününde buna göre entegre olduğunu biliyorum. komut satırında

cvs rename old new
cvs commit -m "Renamed old to new"

ile de yapılabiliyormuş gördüğüm kadarı ile.

Dediğiniz gibi SVN yükselen bir yıldız, bildiğim kadarı ile Pardus ekibi SVN üzerinde çalışıyor ama bunca yıllık CVS miadını dolduruyor demek ve kenara atmak hak yemek olabilir. Özellikle Windows ortamı için (SVN in durumunu bilmiyorum) en iyi seçenek olarak düşünülebilir.

Sevgilerle

0
ahmetkurukose
Bu guzel ve bilgilendirici yazi icin cok tesekkurler.:)
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Computer Programming Using GNU Smalltalk

FZ

Smalltalk, ilk nesne yönelimli dillerden biri olarak pek çok başka platforma da esin kaynağı olmuştur. Bu önemli programlama dili için Canol Gökel tarafından yayınlanan "Computer Programming Using GNU Smalltalk" başlıklı bedelsiz kitabı buradan indirip okuyabilirsiniz.

Gutenberg Projesi Artık Sesli

melitical

1971 'den beri devam eden Gutenberg Projesi dahilinde artık sesli kitaplar da var. Farklı dillerde sesli kitaplar ücretsiz olarak dinlenebilecek.

Web Madenciliği ile Daha İyi Bir E-öğrenme Modeli Mümkün Mü?

FZ

Web madenciliği kısaca Web sayfaları ve servislerinden otomatik olarak bilgi çekip bunlardaki kalıpları keşfetmek için veri madenciliği tekniklerinin kullanılması olarak tanımlanabilir. Acaba makina öğrenme (machine learning) ve veri madenciliği (data mining) tekniklerinin özel bir dalı olan web madenciliği yöntemleri ile daha iyi e-öğrenme sistemleri geliştirmek mümkün müdür?

Missouri-Columbia Üniversitesinden James Laffey ve Jiye Ai'nin "Web Mining as a Tool for Understanding Online Learning" başlıklı makalesi bu ve benzeri sorulara olumlu cevaplar vermenin yanısıra güzel ve pratik bir örnek de gösteriyor: Yazıda somut olarak bir Blackboard (webct) e-öğrenme sisteminin web madenciliği ile nasıl daha da faydalı ve verimli hale getirilebileceği anlatılıyor.

Araştırmacılar, makalenin başında web madenciliği tekniklerinin başlıca şu üç noktada ciddi fayda getireceğini belirtmişler: devamı burada...

C Programlama Dilinin Evrimi

sametc

Aşağıdaki yazı benim çok ilgimi çekti paylaşmak isterim sanırım herkes benim gibi bu dilin nasıl ortaya çıktığını merak etmiştir.

C'nin tarihini tartışmaya UNIX'ten bahsedilmeden başlanamaz çünkü işletim sistemi ve sistem üzerinde çalışan programların bir çoğu C'de yazılmıştır.

Batan Geminin Malları

SHiBuMi

Yer uygun mu bilmiyorum ama söz konusu 14 tane bilgisayar kitabı olunca FM'ye göndermenin en iyisi olacağını düşündüm. Elimdeki 14 adet bilgisayar kitabını satıyorum, hepsi İngilizce ve yurtdışından (çoğu Amazondan) alınmış kitaplar. Hepsi iyi durumda ve kullandığım süre içersinde hepsi bana oldukça faydalı oldular. Artık programlama ile uğraşmayacağım, ama bu kitapların da boşu boşuna kütüphanemde durmasını istemiyorum, ben bu kitaplara zaman içersinde kendi çapımda ciddi paralar ödedim, aranızda bu konularla ilgilenen ve bütçeleri yüzünden bu kitaplara ulaşamayanlar var mutlaka, bu en azından bir fırsat olabilir. Kitapların listesi Word dosyası olarak http://www.angelfire.com/linux/kitap/kitaplar.doc adresinde mevcut, ilgilenenler bana serdar_soydemir@hotmail.com adresinden ulaşabilirler.