CVS ile Yazılım Geliştirme Metodu - Papatyam Forum

Papatyam Forum

Go Back   Papatyam Forum > ..::.BİLGİSAYAR & TEKNOLOJİ.::. > Web Master

Yeni Konu aç  Cevapla
 
Seçenekler
Alt 20 January 2009, 15:41   Mesaj No:1

CoNQueRoR_61

Papatyam Usta Üyesi
Avatar Otomotik
Durumu:CoNQueRoR_61 isimli Üye şimdilik offline konumundadır
Papatyam No : 1397
Üyelik T.: 20 January 2009
Arkadaşları:0
Cinsiyet:
Memleket:istanbul
Yaş:35
Mesaj: 131
Konular:
Beğenildi:
Beğendi:
Takdirleri:10
Takdir Et:
Konu Bu  Üyemize Aittir!
Standart 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 ???
Alıntı ile Cevapla
Cevapla

Bookmarks

Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler

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

Yeni Sayfa 1

www.papatyam.org Ana Sayfa

Tefekküre Davet Köşesi

Papatyam Sosyal Medya Guruplarımıza Katılın

                       Instagram         

Papatyam alemdarhost.com sunucularında barındırılmaktadır.