git sürüm takip sistemi
TRANSCRIPT
Git Srm Takip Sistemizge Barbaros [email protected]
Konular
Srm Takip Sistemi Nedir?
Git Nedir?
Git'in zellikleri
Git'in Temelleri
Git Sunucu
Git Komutlar
Srm Takip Sistemi Nedir?
Neden umursamalyz?
Srm takibi bir dosyada veya dosya kmesinde yaplan deiikliklerin kaydn srmler halide tutmak ve sonrasnda bu gemi srmlere eriebilmek iin kullanlan bir sistemdir.
Srm takip sistemleri genellikle kaynak kodlar n takibi icin kullanlyor ama siz bilgisayarda bulunan herhangi bir dosya iin bunu yapabilirsiniz.
Resim, belge, sunum vs.
Srm kontrol her eyi bozduunuzda belgelerinizi en son dzgn haline geri alabilmenizi salar.
Yerel srm takip sistemi
rn: RCS
Merkezi Srm Kontrol Sistemi
Merkezi Srm Kontrol Sistemi
nsanlarn genellikle karlat dier bir sorun, ayn belge veya kod zerinde birden fazla kiinin ayn anda almas.
Bu problemi gidermek icin merkezi srm takip sistemleri kullanlmaktadr.
rn: CVS, Subversion, Perforce
Bu sistemlerde bir sunucu dosyalarn btn srmlerinin bulunduu depoyu barndrr ve istemciler buraya balanarak dosyalarn versionlarini kendi yerel makinalarina ceker.
Avantaj: Ynetimi kolay.
Dezavantaj: Single Point of Failure. Sunucu kapandnda kimse elindeki versiyonlanm dosyay hi bir yere yazamaz.
Datk Srm Takip Sistemi
Datk Srm Takip Sistemi
rn: Git, Mercurial, Bazaar veya Darcs
stemciler sadece son srm yerel makinalarna indirmez, ayn zamanda repo'nun bir aynasn kendi yerel makinalarnda barndrm olurlar.
Sunucu ldnde istemciler kendi makinalarnda almaya devam eder sonra sunucu ayaa kalktnda istemci deiiklikleri sunucuya uygular.
Avantaj:
Her istemci sunucunun kople yedei olur.
stemcilerin kendi aralarnda birlikte almalarna ve tepedeki hiyerariden bamsz kendi aralarnda farkl i aklar gereklemelerine yardmc olur.
Git Nedir?
Git'in zellikleri
Git,GPLv2 lisansl datk srm takip sistemidir.
Kk veya byk lekli her trl projede kullanlabilir, hzl ve salamdr.
Tarihesi: Linux ekirdeinin gelitiricileri nceleri ticari bir srm takip sistemi olan BitKeeper' kullanyorlard. Ticari yazlm olan BitKeeper'n Linux topluluu tarafndan cretsiz kullanmna son verilmesi zerine topluluk tarafndan yeni bir ara gelitirildi.
Yeni sistemin amaclarndan bazlar:HzBasit Tasarm
Dogrusal olmayan gelitirim icin gl destek (Paralel dallanmalar (branch))
Tamamen datk
Linux ekirdei gibi byk bir projenin verimli bir ekilde stesinden gelebilmesiBu amalarla 2005 ylnda Git srm takip sistemi oluturuldu.
Git'in Temelleri
Fark deil sistemin o anki durumunun bir resmini (snapshot) alr:
Git'in Temelleri
Neredeyse her ilem yerel makinede gerekleir. Boylece adan kaynaklanan yavasliktan kurtulur. Ornegin gemisi gormek iin aa bal olmaya gerek yoktur.
Btnlk Git'te nemlidir. Her ey kaydedilmeden nce checksum' alnr. Bylece siz degisikligi yaparken Git'in bundan haberdar olmasna gerek yoktur.
Git'e geri alnmas mmkn olmayan iler yaptrmak neredeyse imkanszdr. Sadece veri ekleme ilemi yapabilirsiniz.
Git'in Temelleri
Git aamadan oluur:
.git dizini: Git'in projeye ait stbilgileri ve nesne veritabann tuttuu dizindir. Bu dizin Git'in en nemli parasdr ve uzaktaki bir depodan klonladnz depolar buraya kopyalanr.
alma dizini: projenin bir srmnn tek bir kopyasdr ve bu dosyalar git dizini ierisindeki sktrlm veritabannn alm halidir ve siz zerinde alabilmeniz iin diskte yerini alr.
Staging alan: Git dizininde yer alan bir sonraki commit'te nelerin yer alacann bilgisini tutan dosyadr. Bazen index olarak adlandrlr ama genellikle staging alan denir.
Git Kurulumu: Linux
Ubuntu:# apt-get install git
Centos:# yum install git
Git Komutlar
Yeni bir proje oluturma$ git init deneme_proje # bu sadece kendimizin erisecegi ve uzerinde calisacagimiz proje$ git init --bare deneme_proje.git # Baskalar ile paylasilacak bir proje olusturmak icin bare komutunu kullaniyoruz ve bu tarz projeler .git ile bitmeli.
Olusturdugumuz veya daha nce mevcut bir projenin kopyasini alma:$ git clone git@ip_address:/home/git/deneme_proje.git deneme_proje
Yerel git kopyasndaki ayarlar$ git config --global user.name "Ozge Barbaros"$ git config --global user.email [email protected]: Bu yaplan commit'lerde gorunecek isim ve e-mail adresini belirtir.
Git Komutlar
Proje ierisinde degisiklik yaptktan sonra:$ git status # projede yaplan son degisiklikleri gosterir hangi dosyalarn eklenip hangilerin silindigini, hangilerinde deiiklik yapldn.$ git diff # bir nceki srm ile aradaki farklar gsterir.$ git add dosya_adi # yeni olusturulan dosyalar ve dizinleri depoya ekler.$ git commit -a -m Commit mesaji # yaplan degisikliklerin yerel repo'ya eklenmesi$ git push # son commitin uzaktaki repoya gonderilmesi.
Git Komutlar
Commit gemii:$ git log
Uzak repo'daki son degisikligi alma:$ git pull
Git Komutlar
Git Komutlar
$ git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
Git Komutlar
Gormezden gelinecek dosyalar: .gitignore
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
Git Komutlar
Dosya silme:$ rm dosya_adi$ git rm dosya_adi
Dosya tama/isim degisikligi:$ git mv file_from file_to
Son commit'e bireyler eklemek icin orn:$ git commit -m initial$ git add unutulan_dosya$ git commit --amend
Git komutlar
git reset HEAD CONTRIBUTING.md # staging'e eklenmi bir dosyay geri alma.
git checkout -- CONTRIBUTING.md # uzerinde duzenleme yapilmis dosyayi geri alma.
Kaynaklar
https://git-scm.com/doc