Upload
osman-yuksel
View
1.331
Download
5
Embed Size (px)
DESCRIPTION
Özgür Yazılım ve Linux Günleri 2013'deki sunum
Citation preview
MUHAFIZ
GIT HOOK'LARI İLE KOD KALİTESİNİ KORUMAKVE
OSMAN YÜKSEL
NİSAN'13 - Özgür YAZILIM VE LİNUX günlerİ
NASIL KURULUR?NASIL KURULUR?
RUNNER'LARRUNNER'LAR
Neden?Neden?
GIT HOOK'LARIGIT HOOK'LARI
MUHAFIZMUHAFIZ
““YAZARIM LAN BEN BUNU!”YAZARIM LAN BEN BUNU!”
AÇIK KAYNAK VE TOPLULUĞUN GÜCÜAÇIK KAYNAK VE TOPLULUĞUN GÜCÜ
AlternatİF YÖNTEMLERAlternatİF YÖNTEMLER
SORULARSORULAR
NEDEN?
Daha önce çalıştığımız çoğu yerde kod standartları belirlendiDaha önce çalıştığımız çoğu yerde kod standartları belirlendi
NEDEN?
Daha önce çalıştığımız çoğu yerde kod standartları belirlendiDaha önce çalıştığımız çoğu yerde kod standartları belirlendi
Ama hiçbir yerde uygulanmadıAma hiçbir yerde uygulanmadı
NEDEN?
Daha önce çalıştığımız çoğu yerde kod standartları belirlendiDaha önce çalıştığımız çoğu yerde kod standartları belirlendi
Ama hiçbir yerde uygulanmadıAma hiçbir yerde uygulanmadı
Production ortamında syntax errorProduction ortamında syntax errorvar_dump($badwords);var_dump($badwords);
console.log yüzünden “patlayan” ödeme sayfasıconsole.log yüzünden “patlayan” ödeme sayfasıVirgül yüzünden parse edilemeyen JSONVirgül yüzünden parse edilemeyen JSON
NEDEN?
Daha önce çalıştığımız çoğu yerde kod standartları belirlendiDaha önce çalıştığımız çoğu yerde kod standartları belirlendi
Ama hiçbir yerde uygulanmadıAma hiçbir yerde uygulanmadı
Production ortamında syntax errorProduction ortamında syntax errorvar_dump($badwords);var_dump($badwords);
console.log yüzünden “patlayan” ödeme sayfasıconsole.log yüzünden “patlayan” ödeme sayfasıVirgül yüzünden parse edilemeyen JSONVirgül yüzünden parse edilemeyen JSON
““Bunlar Sonsuzdöngü'de olmayacak”Bunlar Sonsuzdöngü'de olmayacak”
NEDEN?
Daha önce çalıştığımız çoğu yerde kod standartları belirlendiDaha önce çalıştığımız çoğu yerde kod standartları belirlendi
Ama hiçbir yerde uygulanmadıAma hiçbir yerde uygulanmadı
Production ortamında syntax errorProduction ortamında syntax errorvar_dump($badwords);var_dump($badwords);
console.log yüzünden “patlayan” ödeme sayfasıconsole.log yüzünden “patlayan” ödeme sayfasıVirgül yüzünden parse edilemeyen JSONVirgül yüzünden parse edilemeyen JSON
““Bunlar Sonsuzdöngü'de olmayacak”Bunlar Sonsuzdöngü'de olmayacak”
Ama bunun için code review'da süre harcamamalı!Ama bunun için code review'da süre harcamamalı!
GİT HOOK'LARI
Git, çoğu işlemin öncesinde ve sonrasında Git, çoğu işlemin öncesinde ve sonrasında “araya işlem sokmanıza” izin veriyor“araya işlem sokmanıza” izin veriyor
pre-commitpre-commitpre-receivepre-receivepost-updatepost-updatepre-apply-patchpre-apply-patch........
ALTERNATİF YÖNTEMLER ARAŞTIRDIK
https://github.com/jish/pre-commit'ihttps://github.com/jish/pre-commit'i bulduk bulduk
ALTERNATİF YÖNTEMLER ARAŞTIRDIK
https://github.com/jish/pre-commit'ihttps://github.com/jish/pre-commit'i bulduk bulduk
İlk başta her şey çok güzel gidiyordu :)İlk başta her şey çok güzel gidiyordu :)
ALTERNATİF YÖNTEMLER ARAŞTIRDIK
https://github.com/jish/pre-commit'ihttps://github.com/jish/pre-commit'i bulduk bulduk
İlk başta her şey çok güzel gidiyordu :)İlk başta her şey çok güzel gidiyordu :)
Ama bazı sorunlar vardıAma bazı sorunlar vardı
ALTERNATİF YÖNTEMLER ARAŞTIRDIK
https://github.com/jish/pre-commit'ihttps://github.com/jish/pre-commit'i bulduk bulduk
İlk başta her şey çok güzel gidiyordu :)İlk başta her şey çok güzel gidiyordu :)
Ama bazı sorunlar vardıAma bazı sorunlar vardı
Çalışmıyordu :(Çalışmıyordu :(
ALTERNATİF YÖNTEMLER ARAŞTIRDIK
https://github.com/jish/pre-commit'ihttps://github.com/jish/pre-commit'i bulduk bulduk
İlk başta her şey çok güzel gidiyordu :)İlk başta her şey çok güzel gidiyordu :)
Ama bazı sorunlar vardıAma bazı sorunlar vardı
Çalışmıyordu :(Çalışmıyordu :(
ALTERNATİF YÖNTEMLER ARAŞTIRDIK
https://github.com/jish/pre-commit'ihttps://github.com/jish/pre-commit'i bulduk bulduk
İlk başta her şey çok güzel gidiyordu :)İlk başta her şey çok güzel gidiyordu :)
Ama bazı sorunlar vardıAma bazı sorunlar vardı
Çalışmıyordu :(Çalışmıyordu :(Ruby ile geliştirilmişti, biz çok Ruby bilmiyordukRuby ile geliştirilmişti, biz çok Ruby bilmiyordukGenelde Ruby ile geliştirilen projeler için “Runner”lar vardıGenelde Ruby ile geliştirilen projeler için “Runner”lar vardıSunucu tarafında çalışmıyordu :(Sunucu tarafında çalışmıyordu :(
“YAZARIM LAN BEN BUNU!”
Bildiğimiz bir dil ile geliştirilmeliydi (PHP?)Bildiğimiz bir dil ile geliştirilmeliydi (PHP?)Sonsuzdöngü'de belirlediğimiz standartları desteklemeliydiSonsuzdöngü'de belirlediğimiz standartları desteklemeliydiSunucu tarafında da çalışmalıydıSunucu tarafında da çalışmalıydıAçık kaynak olmalıydı!!1Açık kaynak olmalıydı!!1
“YAZARIM LAN BEN BUNU!”
Oturduk yazdık :/Oturduk yazdık :/
Bildiğimiz bir dil ile geliştirilmeliydi (PHP?)Bildiğimiz bir dil ile geliştirilmeliydi (PHP?)Sonsuzdöngü'de belirlediğimiz standartları desteklemeliydiSonsuzdöngü'de belirlediğimiz standartları desteklemeliydiSunucu tarafında da çalışmalıydıSunucu tarafında da çalışmalıydıAçık kaynak olmalıydı!!1Açık kaynak olmalıydı!!1
“YAZARIM LAN BEN BUNU!”
Oturduk yazdık :/Oturduk yazdık :/
Bildiğimiz bir dil ile geliştirilmeliydi (PHP?)Bildiğimiz bir dil ile geliştirilmeliydi (PHP?)Sonsuzdöngü'de belirlediğimiz standartları desteklemeliydiSonsuzdöngü'de belirlediğimiz standartları desteklemeliydiSunucu tarafında da çalışmalıydıSunucu tarafında da çalışmalıydıAçık kaynak olmalıydı!!1Açık kaynak olmalıydı!!1
MUHAFIZ
http://sonsuzdongu.github.com/muhafizhttp://sonsuzdongu.github.com/muhafiz
NASIL KURULUR?
$ git clone git://github.com/sonsuzdongu/muhafiz.git ~/muhafiz$ git clone git://github.com/sonsuzdongu/muhafiz.git ~/muhafiz$ cp ~/muhafiz/git-hooks/* /your/project/.git/hooks$ cp ~/muhafiz/git-hooks/* /your/project/.git/hooks
NASIL KURULUR?
$ git clone git://github.com/sonsuzdongu/muhafiz.git ~/muhafiz$ git clone git://github.com/sonsuzdongu/muhafiz.git ~/muhafiz$ cp ~/muhafiz/git-hooks/* /your/project/.git/hooks$ cp ~/muhafiz/git-hooks/* /your/project/.git/hooks
$ git config muhafiz.bootstrap-file ~/muhafiz/src/bootstrap.php$ git config muhafiz.bootstrap-file ~/muhafiz/src/bootstrap.php
NASIL KURULUR?
$ git clone git://github.com/sonsuzdongu/muhafiz.git ~/muhafiz$ git clone git://github.com/sonsuzdongu/muhafiz.git ~/muhafiz$ cp ~/muhafiz/git-hooks/* /your/project/.git/hooks$ cp ~/muhafiz/git-hooks/* /your/project/.git/hooks
$ git config muhafiz.bootstrap-file ~/muhafiz/src/bootstrap.php$ git config muhafiz.bootstrap-file ~/muhafiz/src/bootstrap.php
$ git config muhafiz.active-runners 'phpcs, jshint, consolefoo'$ git config muhafiz.active-runners 'phpcs, jshint, consolefoo'
RUNNER'LARDosya adında veya içeriğinde işlem yapan PHP sınıflarıDosya adında veya içeriğinde işlem yapan PHP sınıfları
RUNNER'LAR
RUNNER'LARDosya adında veya içeriğinde işlem yapan PHP sınıflarıDosya adında veya içeriğinde işlem yapan PHP sınıfları
bom: ByteOrderMarkbom: ByteOrderMarkconsolefoo: console.log(), console.debug()consolefoo: console.log(), console.debug()forbiddenfile: İzin verilmeyen dosyalar. foo.~ gibiforbiddenfile: İzin verilmeyen dosyalar. foo.~ gibijshint: JavaScript checkjshint: JavaScript checklineend: Unix/Windows Satır sonulineend: Unix/Windows Satır sonuphpcsfixer: php-cs-fixerphpcsfixer: php-cs-fixerphpcs: PHP Code Snifferphpcs: PHP Code Snifferphp: Php Syntax Checkphp: Php Syntax Checkvardump: var_dump(), print_r()vardump: var_dump(), print_r()
RUNNER'LARDosya adında veya içeriğinde işlem yapan PHP sınıflarıDosya adında veya içeriğinde işlem yapan PHP sınıfları
bom: ByteOrderMarkbom: ByteOrderMarkconsolefoo: console.log(), console.debug()consolefoo: console.log(), console.debug()forbiddenfile: İzin verilmeyen dosyalar. foo.~ gibiforbiddenfile: İzin verilmeyen dosyalar. foo.~ gibijshint: JavaScript checkjshint: JavaScript checklineend: Unix/Windows Satır sonulineend: Unix/Windows Satır sonuphpcsfixer: php-cs-fixerphpcsfixer: php-cs-fixerphpcs: PHP Code Snifferphpcs: PHP Code Snifferphp: Php Syntax Checkphp: Php Syntax Checkvardump: var_dump(), print_r()vardump: var_dump(), print_r()
Nasıl çalışıyor bir görelim?Nasıl çalışıyor bir görelim?
AÇIK KAYNAK VE TOPLULUĞUN GÜCÜ
Volkan Altan Yeni Runner'lar
AÇIK KAYNAK VE TOPLULUĞUN GÜCÜ
Volkan Altan Yeni Runner'lar
Sercan VirlanBugfix
AÇIK KAYNAK VE TOPLULUĞUN GÜCÜ
Volkan Altan Yeni Runner'lar
Adil IlhanYeni Runner'lar
Sercan VirlanBugfix
AÇIK KAYNAK VE TOPLULUĞUN GÜCÜ
Volkan Altan Yeni Runner'lar
Sercan VirlanBugfix
Eser ÖzvatafSVN Desteği
Adil IlhanYeni Runner'lar
Sorular ?
Teşekkürler
http://github.com/yuxel
http://twitter.com/yuxel
http://yuxel.net