20 January 2009, 15:41 | Mesaj No:1 |
Durumu:
Papatyam No :
1397
Üyelik T.:
20 January 2009
Arkadaşları:0
Cinsiyet:
Memleket:istanbul
Yaş:35
|
CVS ile Yazılım Geliştirme Metodu
CVS ile Yazılım Geliştirme Metodu CVS en cok kullanilan Kaynak Kod Idare programlarindan birisidir. "Acik Yazilim" (Open Source) projeleri surekli CVS kullanirlar. CVS kilitsiz sistem denen yontem ile calisir. Kaynak deposundan alinan butun kayitlari, her programci degistirebilir. Bazi Kaynak Kod Idare programlari buna izin vermez. Acik Kod projeleri dunyanin her tarafina yayili oldugundan, kilitsiz onlara daha uygun gelmekte CVS cok hafif bir programdir, CVS kullanan sistemin o kadar guclu olmasi gerekmez. Kitleme usulu calisan KKI sistemlerinde, kayitlar once kitlenir, baska kimse erisemez, sadece tek bir kisi degisim yapip kayidi depoya geri verir. Dalli/Budakli Kod Agaci metodu kullanan KKI sistemleri, ana kod agacindan, bir dal yaratip onun uzerinde calismaya imkan verir, ve gerektiginde bu daldan ana koda 'birlestirme' yapilabilir. Cakismalarin mutlaka cozulmesi gerekir. CVS dallanmaya izin verir. Fakat bizim tavsiyemiz, CVS ile dallanma kullanilmamasi. Proje tecrubemizde karsimiza bir cok KKI sistemi cikti. PVCS (kitlemeli), ClearCase (dallama/budaklama sistemi cok rahattir) adli programlari kullandik. Bunlarin icinden ClearCase, bazi isleri rahat yapmanizi saglasa da, genelde butun duzeninizi zorlastiracaktir, ve kurmasi ve idaresi muthis zor bir programdir. PVCS'in durumu rezalet otesidir, o yuzden kategoriye alinmasina bile gerek yok. CVS kullanmaya karar verdiyseniz, isabet ettiniz. Ayni sirkette ve projede 40 kadar programcinin CVS'i basari ile kullandigini duyduk. CVS kullanirken dikkat etmeniz gereken husus sudur: Butun programcilar, ana depoya kendileri 'birlestirme' yaptiklari icin, bazen butun kaynak kodunuzda hatalar artabilir. Yani, birbirinden habersiz yapilan degisiklikler, ana kod agacini hasta bir hale getirebilir. Bazi gordugumuz KKI duzenlerinde, tek bir kisi butun programci dallarindan ana agaca birlestirmeyi yapiyordu. (CVS'te herkes kendi yapar). Bu kisi her degisime bakabildigi icin (ve gorevi uzere), birbirine uymayan degisiklikleri iptal edebiliyor. Fakat bizce bu tek kisilik gorev cok zor, ve bir insana cok yukleniyor. Onun yerine, kontrolu herkese geri veriyoruz. Fakat, ana agacin durumunu surekli kontrol etmemiz gerekiyor. Bunun cok basit bir yolu var. Otomatik bir sekilde, her saatte bir, butun kaynak kodunu derleyip, testlerden gecirirsiniz. Eger yanlislar bulunursa, otomatik olarak bu yanlisler e-mail ile herkese gonderilir. Once yeni bir Unix kullanicisi yaratin. Adi 'canavar' olsun mesela. Canavar her saatte bir, Unix cron kontrolunde uyanir. Uyaninca ilk yapacagi sey cvs co komutunu isletmek olacak. Boylece depodan en yeni kaynak kodlar alinir. Bundan sonra canavar, ant, make ile butun kaynak kodu derleyecek. Sonra JUnit testlerini isletecek. Butun bunlari bir "takip dosyasinda" (log file) gorunmesi lazim. Is bittikten sonra bir grep komutu ile 'Syntax error', TEST FAILED gibi cumleler aranir. Bulunursa, e-mail, takip kayidi ile postalanir. Suclu programcilar bulunup falakaya yatirilir. ($aka $aka..) Asagidaki script bizim son projemizde benim yazdigim script. Sizin projenizin derleme komutu degisik olabilir, onu degistirin. Unutmayin, derleme ile testleri mutlaka isletin. Sonuclarin ayni takip dosyasinda olmasina ozen gosteren. #!/usr/local/bin/perl chdir ($ENV{'HOME'}); $cvs_command = "cvs co sizinprojeniz > /tmp/co_out.txt 2<&1"; system($cvs_command); $lines_1 = 0; $lines_2 = 0; $lines_1 = system("grep \'^U \' /tmp/co_out.txt" $lines_2 = system("grep \'^A \' /tmp/co_out.txt" exit if ($lines_1 != 0 && $lines_2 != 0); $curr_date = `date '+%m/%d/%y-%M'`; chomp($curr_date); $curr_date =~ s/\//\-/g; $log_name = $ENV{'HOME'} . "/logs/build_log_" . $curr_date; system("derle.sh > $log_name 2<&1" $cmd = "grep \'BUILD_FAILED\' $log_name"; #print $cmd . "\n"; $lines = system("grep \'BUILD FAILED\' $log_name" send_mail ("***Hata Bulundu***", $log_name) if ($lines == 0); send_mail ("Basari!", $log_name) if ($lines != 0); exit; sub send_mail { $note = shift; $log = shift; @lines = `cat $log`; open (MESSAGE, "| /usr/lib/sendmail -t" print MESSAGE "To: ali\@falan.com,veli\@falan.com\n"; print MESSAGE "From: Canavar\n"; print MESSAGE "Subject: Derleme-Testler: $note\n"; print MESSAGE "\n"; print MESSAGE "\n"; print MESSAGE "Takip dosyasi $log notu var $note\n"; print MESSAGE "\n"; print MESSAGE "@lines" . "\n"; print MESSAGE "\n"; close (MESSAGE); } Ve asagidaki satirlari cron icin girin. 0 10,11,12,13,14,15,16,17,18,19,20,21,22 * * 1-5 /falan/filan/derle.pl > /dev/null 2<&1
__________________
Biz Bu Hallere Düşecek Adammıydık ???
|
Bookmarks |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
Benzer Konular | ||||
Konu Başlıkları | Konuyu Başlatan | Papatyam Forum Ana Kategori Başlıkları |
Cevaplar | Son Mesajlar |
Kas Geliştirme Diyeti | PESTEMAL | Beslenme ve Diyet | 0 | 20 February 2012 12:05 |
Moral Depolama Metodu! | PESTEMAL | Serbest Atış | 1 | 19 March 2008 00:34 |
Tefekküre Davet Köşesi |
|
Papatyam Sosyal Medya Guruplarımıza Katılın |