SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git ile Sürüm Takibi
Ömer ÖZKAN
omer@ozkan.info
omer.ozkan@ozguryazilim.com.tr
Git ile Sürüm Takibi
Ömer ÖZKAN
omer@ozkan.info
omer.ozkan@ozguryazilim.com.tr
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Ulaşmak isterseniz?
● Kişisel web günlüğü:
http://omerozkan.net
● Eposta:
omer@ozkan.info
● Twitter:
@omerozkan_
● Facebook
facebook.com/omerozkan
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Sürüm Takip Sistemi?
● Sürüm takip sistemi, bir bilgisayar yazılımının kaynak
kodlarının bir depoya değişikliklerle birlikte kaydedilmesi ve
erişilmesini sağlar.
● Sürüm takip sisteminde değişiklik yaparken, o değişikliğin
kimin yaptığı, neden yapıldığını, hangi geliştirmelerin
yapıldığını veya hataların çözüldüğü belirtilir.
● Yapılan bütün değişikliklerin tarihçesi saklanır.
● Merkezi bir sunucu ile çalışıldığında birden çok programcının
ekip halinde geliştirme yapmasını
kolaylaştırır
● VCS (Version Control Systems)
RCS (Revision Control Systems)
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Sürüm Takip Sistemi Olmazsa?
● Nasıl sürüm çıkarıyorsunuz?
● Ekip halinde nasıl çalışıyorsunuz?
● Geri almanız gereken değişiklikleriniz varsa
değişiklikleri nasıl geri alıyorsunuz?
● Ekibinizden biri geliştirdiğiniz sistemi
kullanılamaz hale getirdiğinde kimin yaptığını
nasıl tespit ediyorsunuz? (Blaming)
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Sürüm Takip Sistemleri
● Yerel Sürüm Takip Sistemleri
● SCCS (1972), RCS (1982)
● Senkron Sürüm Takip Sistemleri
● CVS, SVN
● Asenkron Sürüm Takip Sistemleri
● SVN, Bazaar, Git, Mercurial
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Merkezi Sürüm Takip Sistemleri
● CVS
● SVN
● Bazaar
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Dağıtık Sürüm Takip Sistemi
● Git
● Mercurial
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git
● Git, küçük ve büyük ölçekli projelerin hızlı ve
verimli olarak geliştirilmesini sağlayan ücretsiz,
özgür bir sürüm takip sistemidir.
● Asenkron ve dağıtık bir sürüm takip sistemidir.
● GPL v2.0
● HTTP veya SSH protokolü üzerinden uzak
depo ile çalışma
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git'in Ortaya Çıkışı
● Linux çekirdeği BitKeeper adlı dağıtık sürüm
takip sistemi kullanılarak geliştirilmekteydi.
● BitKeeper, Linux çekirdeğini geliştiren
topluluğun ücretsiz lisansını iptal etti.
● Linus Torvalds ve Linux geliştirme topluluğu
bunun sonucunda GIT'i geliştirdi.
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git'in Özellikleri
● Hızlı
● Basit Tasarım
● Paralel Dallanma
● Dağıtık yapı
● Linux çekirdeği gibi büyük projelerde veya daha
küçük projelerde etkin ve verimli kullanım
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Kimler Git kullanıyor?
● Linux Kernel
● X.org
● Eclipse
● PostgreSQL
● Android
● Rails
● Gnome
● KDE
● Drupal
● Google
● Facebook
● Microsoft
● Twitter
● Linkedin
● ...
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
GIT vs SVN Benchmarking
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git Kurulumu
● OpenSuse
zypper in git / zypper install git
● Ubuntu / Debian
apt-get install git
● Fedora / RedHat
yum install git
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git Kullanımı
● Yerel depo oluşturma
(init)
● Commit
● Dallanma (branch)
● Birleştirme (merge)
● Çakışma (conflict)
● Geri alma (revert)
● Sıfırlama (reset)
● Rebase
● Etiketleme (tag)
● Cherry-pick
● Uzak sunucu ile
çalışma
● Stash
● Submodule
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git Çalışma Akışı
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
İlk Commit
● git init (Deponun ilklendirilmesi)
● echo “Hello git” >> first.file (içinde “Hello git”
yazan yeni bir dosya)
● git add first.file (dosyayı stage'e ekleme)
● git commit -m “ilk commit” (commit)
● git status (deponuzun durumunu görüntüleme)
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Staging
● git add dosya_yolu
● git mv kaynak_yol hedef_yol
● git rm dosya_yolu
● git commit -a
● git add -i
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git Checkout
● Bir dala geçmek için
● Git checkout branchA
● Herhangi bir commit anına gitmek için
● Git checkout 6c3dd0 (commit no)
● Herhangi etiketlediğiniz bir commit'e gitmek için
● Git checkout tags/tag_adi
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Dallanma
● Bir dal oluşturmak için
git branch branchB
● Yeni dalda çalışmak
için
git checkout branchB
● Her ikisini tek komutta
yapmak için
git checkout -b
branchB
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Dallanma
● Depodaki dalları ve hangi dalda olduğunuzu
görüntüleyebilmek için:
git branch
● İki dal arasındaki farkı görebilmek için:
● git diff branchA branchB
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Geri Alma
● Git revert commit_id
komutu ile yapılır ve
commit_id'deki
konuma geri dönülür
● Revert işlemi ayrı bir
commit'dir.
git revert a23b46
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Sıfırlama
● Üç tür kullanımı vardır.
● git reset --soft
● git reset --mixed
● git reset --hard
● Diyelimki depomuzda 3 commit yapılmış olsun:
A – B – C
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git reset -- soft
A – B – C
● Git reset -- soft B komutu verildiğinde:
● HEAD, B'yi işaret eder,
● Workspace de yapılan son değişiklikler
silinmez.
● C commiti ile yapılan değişiklikler de stage'de
yer alır.
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git reset -- mixed
A – B – C
● Git reset -- mixed B komutu verildiğinde:
● HEAD, B'yi işaret eder,
● Workspace de yapılan son değişiklikler
silinmez,
● C commiti ile yapılan değişiklikler çalışma
alanında (workspace) yer alır.
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git reset -- hard
A – B – C
● Git reset -- hard B komutu verildiğinde:
● HEAD, B'yi işaret eder,
● Workspace de yapılan bütün değişiklikler silinir,
● C commiti ile yapılan değişiklikler de silinir.
● Git reset işlemlerinden sonra mutlaka
git status ile kontrol edilmelidir.
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Birleştirme
● Bir dalı üzerinde çalıştığınız dala birleştirmek
için
● git merge branchB
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Çakışma (Conflict)
● Git merge komutu ile eğer otomatik birleştirme
yapılamaz ise çakışma (conflict) olur.
● İlgili çakışmaları düzeltilip bir commit daha
yapılır.
● Çakışma çözümleri için araçlar kullanılabildiği
gibi basit bir editor ile de gerçekleştirilebilir.
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
İleri Sarma ve Birleştirme
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Rebase (Yeniden temellendirme)
● Bir dalı temel alarak diğerine dallandınız.
● Temel aldığınız dalda commit'ler yapıldı ve bu
commit'leri yeni oluşturduğunuz dala eklemek
ve sanki henüz yeni dallanmış gibi
etkilenmesini isterseniz yeniden
temellendirebilirsiniz:
git rebase branch_adi
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Rebase (Yeniden Temellendirme)
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Etiketleme
● Etiketleme yapmak için
● Git tag -a v1.0.0 -m “version 1.0.0”
● Etiketleri listelemek için
● Git tag -l veya git tag -l “v1.0.*”
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Cherry-pick
● Bir dala herhangi bir
daldan sadece belirli
bir commit'i almak
istiyorsanız:
git cherry-pick
commit_id
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Uzak Depo ile Çalışma
● Yerelinizde var olan bir depoya uzak depo
eklemek için:
● git remote add remote_name url
● Uzak depoyu yerelinize klonlamak için:
● git clone url
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Uzak Depo ile Çalışma
● Uzak depoya commit'leri göndermek için
git push origin branchA
● Yerel deponuzu, yereldeki dallarınızda herhangi
bir değişiklik olmadan güncellemek için:
git fetch
● Yerel deponuzu güncellemek, uzak sunucuda
yapılan commitleri yerel dallara almak için
git pull origin branchA
● Git pull komutu fetch ve merge işlemini
gerçekleştirir.
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Uzak Depo ile Çalışma
● Uzak depoda yeni bir dal oluşturmak için:
● git push -u origin develmaster
● Uzak depoya etiketleri göndermek için
● git push origin tag_name
● git push origin --tags
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Stash
git stash save mesajiniz
git stash
● Listelemek için
git stash list
● Stash ile kaydettiğiniz değişiklikleri tekrar çalışma alanınıza
aktarmak için
git stash apply
git stash pop (stack; son değişikliği uygular ve stash listesinden
siler)
● Stash ile kaydettiğiniz değişikliği uygulamadan silmek için
● git stash drop
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Submodule
● Git ile bir veya birden fazla depoyu, ana deponuza
ekleyerek hiyerarşik olarak geliştirme yapabilirsiniz.
cd anadepo/altdepolar
git clone altdepo1_url
cd anadepo/
git submodule add url ./altdepolar/altdepo1
git commit -m “altdepo1 submodule olarak eklendi”
git push
● Alt modüllerle ilgili veriler deponuzun kök
dizininde .gitmodules dosyasında yer alır.
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git Help
● Git ile ilgili bütün komutlara git help komutu ile
ulaşabilirsiniz.
● Bir komutun detaylı dökümanına ulaşmak için
git help komut_adi
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git'i Deneyin
● Herhangi bir yazılım, araç kurmadan web
tarayıcısı üzerinden git deneyin, öğrenin:
http://try.github.io
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git – SVN
● SVN depoları için Git istemcisi kullanabilirsiniz!
● git svn clone url -T trunk -b branches -t tags
● git svn clone url -s (standart)
● git show-ref
● git commit -m “commit mesaji”
● git svn dcommit (git push)
● git svn fetch (git svn rebase ile commit'ler yerele alınır, git pull)
● git svn rebase
● git svn branch yeni_dal
● Detaylı doküman: http://git-scm.com/book/tr/Git-and-
Other-Systems-Git-and-Subversion
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git ile Yazılım Geliştirme
● Git ile yazılım geliştirmek için genel olarak
kullanılan üç yöntem vardır:
● Geliştirme Dalı
● Özellik Dalları
● Geliştirici Depoları
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Geliştirme Dalı
● Sürüm çıkartılan
anadal dışında
(genellikle master) bir
geliştirme dalı
bulunur. (Örnek:
develmaster)
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Özellik Dalları
● Yazılıma her eklenen
özellik için ayrı bir dal
oluşturulur.
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Geliştirici Depoları
● Her geliştiricinin
kendine özel bir klonu
vardır.
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git Araçları
● Tig (konsol aracı)
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git Cola
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Smart Git
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Gitg
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Gitlab
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Git Hosting
● Gitorius : gitorius.org
● Gitlab : gitlab.com/cloud
● Github: github.com
● Bitbucket: bitbucket.org
● Google Code: code.google.com
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
SORULAR?
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
Ulaşmak isterseniz?
● Kişisel web günlüğü:
http://omerozkan.net
● Eposta:
omer@ozkan.info
● Twitter:
@omerozkan_
● Facebook
facebook.com/omerozkan
Özgür Yazılım A.Ş.
www.ozguryazilim.com.tr
TEŞEKKÜRLER

Más contenido relacionado

La actualidad más candente

La actualidad más candente (14)

DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
 
WordPress ve Multisite Wordpress İle Büyük Ölçekli Çözümler
WordPress ve Multisite Wordpress İle Büyük Ölçekli ÇözümlerWordPress ve Multisite Wordpress İle Büyük Ölçekli Çözümler
WordPress ve Multisite Wordpress İle Büyük Ölçekli Çözümler
 
Abis Teknoloji şirket içi Docker sunumu
Abis Teknoloji şirket içi Docker sunumuAbis Teknoloji şirket içi Docker sunumu
Abis Teknoloji şirket içi Docker sunumu
 
Jenkins Notlarım
Jenkins NotlarımJenkins Notlarım
Jenkins Notlarım
 
Angular Web Programlama
Angular Web ProgramlamaAngular Web Programlama
Angular Web Programlama
 
Sanallaştırmada Yeni Akım - Docker
Sanallaştırmada Yeni Akım - DockerSanallaştırmada Yeni Akım - Docker
Sanallaştırmada Yeni Akım - Docker
 
Test Driven Development
Test Driven Development Test Driven Development
Test Driven Development
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web Programlama
 
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır? Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
Docker Nedir, Ne İşe Yarar, Nasıl Kullanılmalıdır?
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
 
Sanallastirmada yeni akim: Docker
Sanallastirmada yeni akim: DockerSanallastirmada yeni akim: Docker
Sanallastirmada yeni akim: Docker
 
ASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a Geçiş
 
PHPUnit ve Laravel
PHPUnit ve LaravelPHPUnit ve Laravel
PHPUnit ve Laravel
 
Jstanbul, Node.js based Socket.IO, Express and HTML5 based Bingo Game
Jstanbul, Node.js based Socket.IO, Express and HTML5 based Bingo GameJstanbul, Node.js based Socket.IO, Express and HTML5 based Bingo Game
Jstanbul, Node.js based Socket.IO, Express and HTML5 based Bingo Game
 

Destacado

Vipera - Tubitak Yarışması Final Sunumu
Vipera - Tubitak Yarışması Final SunumuVipera - Tubitak Yarışması Final Sunumu
Vipera - Tubitak Yarışması Final Sunumu
Ömer ÖZKAN
 
REST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis GeliştirmeREST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis Geliştirme
emirkarsiyakali
 

Destacado (20)

Özgür Yazılım & GNU/Linux
Özgür Yazılım & GNU/LinuxÖzgür Yazılım & GNU/Linux
Özgür Yazılım & GNU/Linux
 
Vipera - Tubitak Yarışması Final Sunumu
Vipera - Tubitak Yarışması Final SunumuVipera - Tubitak Yarışması Final Sunumu
Vipera - Tubitak Yarışması Final Sunumu
 
Php1
Php1Php1
Php1
 
PHPkonf'15 - PHP Uygulamanızı Güçlendirin
PHPkonf'15 - PHP Uygulamanızı GüçlendirinPHPkonf'15 - PHP Uygulamanızı Güçlendirin
PHPkonf'15 - PHP Uygulamanızı Güçlendirin
 
Özgür Yazılım ve LINUX
Özgür Yazılım ve LINUXÖzgür Yazılım ve LINUX
Özgür Yazılım ve LINUX
 
Varnish
VarnishVarnish
Varnish
 
Docker - Ankara JUG, Nisan 2015
Docker - Ankara JUG, Nisan 2015Docker - Ankara JUG, Nisan 2015
Docker - Ankara JUG, Nisan 2015
 
Eticaret Güvenliği
Eticaret GüvenliğiEticaret Güvenliği
Eticaret Güvenliği
 
Web Onyuzu Nasil Olmali
Web Onyuzu Nasil OlmaliWeb Onyuzu Nasil Olmali
Web Onyuzu Nasil Olmali
 
PHP Sunusu - 1
PHP Sunusu - 1PHP Sunusu - 1
PHP Sunusu - 1
 
Php mysql sunum
Php mysql sunumPhp mysql sunum
Php mysql sunum
 
Algoritma kurmak
Algoritma kurmakAlgoritma kurmak
Algoritma kurmak
 
Php MySQL
Php MySQLPhp MySQL
Php MySQL
 
Java script
Java scriptJava script
Java script
 
REST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis GeliştirmeREST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis Geliştirme
 
Jquery Giriş
Jquery GirişJquery Giriş
Jquery Giriş
 
Linux sunum
Linux sunumLinux sunum
Linux sunum
 
Nmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım KılavuzuNmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
 
JavaScript sunumu
JavaScript sunumuJavaScript sunumu
JavaScript sunumu
 
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu KurulumuLinux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
 

Similar a Git ile Sürüm Takibi

Similar a Git ile Sürüm Takibi (20)

Git, Github, Versiyon Kontrolü 101
Git, Github, Versiyon Kontrolü 101Git, Github, Versiyon Kontrolü 101
Git, Github, Versiyon Kontrolü 101
 
Git & Git Workflows
Git & Git WorkflowsGit & Git Workflows
Git & Git Workflows
 
Git Sürüm Takip Sistemi
Git Sürüm Takip SistemiGit Sürüm Takip Sistemi
Git Sürüm Takip Sistemi
 
Git 101
Git 101Git 101
Git 101
 
Git Sunumu
Git SunumuGit Sunumu
Git Sunumu
 
Git & Github
Git & GithubGit & Github
Git & Github
 
Abapgit kurulum kullanım
Abapgit kurulum kullanımAbapgit kurulum kullanım
Abapgit kurulum kullanım
 
Git ve GitHub
Git ve GitHubGit ve GitHub
Git ve GitHub
 
Git - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim SistemiGit - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim Sistemi
 
Git ile versiyon kontrolü
Git ile versiyon kontrolüGit ile versiyon kontrolü
Git ile versiyon kontrolü
 
Go Programlama Dili - Seminer
Go Programlama Dili - SeminerGo Programlama Dili - Seminer
Go Programlama Dili - Seminer
 
Git commit ve push’dan bir adım ötesi...
Git commit ve push’dan bir adım ötesi...Git commit ve push’dan bir adım ötesi...
Git commit ve push’dan bir adım ötesi...
 
İnsanlar için GIT
İnsanlar için GITİnsanlar için GIT
İnsanlar için GIT
 
Developer Tools
Developer ToolsDeveloper Tools
Developer Tools
 
Git&GitHub @ Android Developer Days ADD 2013 / @burakaydn
Git&GitHub @ Android Developer Days ADD 2013 / @burakaydnGit&GitHub @ Android Developer Days ADD 2013 / @burakaydn
Git&GitHub @ Android Developer Days ADD 2013 / @burakaydn
 
PostgreSQL Hem Güçlü Hem Güzel!
PostgreSQL Hem Güçlü Hem Güzel!PostgreSQL Hem Güçlü Hem Güzel!
PostgreSQL Hem Güçlü Hem Güzel!
 
PostgreSQL DBA Neler Yapar?
PostgreSQL DBA Neler Yapar?PostgreSQL DBA Neler Yapar?
PostgreSQL DBA Neler Yapar?
 
Kali ile Linux'e Giriş | IntelRAD
Kali ile Linux'e Giriş | IntelRADKali ile Linux'e Giriş | IntelRAD
Kali ile Linux'e Giriş | IntelRAD
 
Git - Bildiğiniz Gibi Değil
Git - Bildiğiniz Gibi DeğilGit - Bildiğiniz Gibi Değil
Git - Bildiğiniz Gibi Değil
 
Devfest Istanbul 2015 Sunumu
Devfest Istanbul 2015 SunumuDevfest Istanbul 2015 Sunumu
Devfest Istanbul 2015 Sunumu
 

Git ile Sürüm Takibi