Git (yazılım)

Vikipedi, özgür ansiklopedi
Gezinti kısmına atla Arama kısmına atla
Git
Git-logo.svg
Git gui.png
Git dahili Grafiksel kullanıcı arayüzü ekran görüntüsü.
Geliştirici(ler) Linus Torvalds, Junio Hamano
İlk yayınlanma 7 Nisan 2005
Kararlı sürüm 2.6.3 / 5 Kasım 2015
Geliştirme durumu Aktif olarak devam ediyor
Programlama dili C, Tcl, Perl
Platform Çapraz Platform
Tür Sürüm Kontrol Sistemi
Lisans GNU Genel Kamu Lisansı v2
Resmî sitesi http://git-scm.com/

'Git, yazılım geliştirme süreçlerinde kullanılan, hız odaklı, dağıtık çalışan bir sürüm kontrol ve kaynak kod yönetim sistemidir. İlk sürümü Linux çekirdeği'nin geliştirilmesinde kullanılmak üzere 2005 yılında bizzat Linus Torvalds tarafından tasarlanıp geliştirilmiş, son Eclipse kullanıcı topluluğu anketi verilerine göre 2013 yılı itibarıyla %30 pazar payına ulaşmıştır.[1]

Git sürüm kontrol sistemini kullanan her bir çalışma dizini (proje), internet erişimi ya da merkezi bir depo olmaksızın tüm tarihçeyi tutan ve sürüm kontrol sisteminin tamamını içinde barındıran tam yetkili birer depodur. Ayni çalışma dizininin bir çok depodan birindeki kopyasında yapılan değişiklikler diğerlerine güven temelli bir değerlendirmeyle kabul edilir; Güvenilmeyenden değişiklik alınmaz, o kendi ayrı sürümünü geliştirmeye devam eder.

Git'in şu anki yazılım bakıcılığını Junio Hamano üstlenmiş durumda. Git, GNU Genel Kamu Lisansı'nın 2. sürümüyle lisanslanmış bir özgür yazılımdır.

Tarihçe[değiştir | kaynağı değiştir]

Git'in ortaya çıkışı, çok sayıda Linux çekirdeği geliştiricisinin proje yönetimi için bir önceki sürüm kontrol sistemi olan BitKeeper'ı tercih etmesiyle başlamıştır. Andrew Tridgell, bir takım tersine-mühendislik yöntemleriyle BitKeeper protokolüne müdahalelerde bulunmuş, ancak BitKeeper'ın telif haklarını elinde bulunduran Larry McVoy, BitKeeper'ın ücretsiz kullanımını reddeterek konuyu hukuki platforma taşıyınca BitKeeper'ın kullanımından vazgeçilmiş, böylece Git'in temelleri atılmıştır.[2]

O günlerde Linus Torvalds, BitKeeper uygulamasında olduğu gibi dağıtık çalışan bir sürüm kontrol sistemi istiyordu ancak piyasadaki mevcut özgür çözümlerin hiçbiri özellikle performans konusunda Torvalds'ın beklentilerini karşılamıyordu. Torvalds bu konuyu piyasadaki mevcut sürüm kontrol sistemlerini ele alarak örneklemişti; bir yamanın uygulanarak ilgili tüm veri yapılarının güncellenmesinin 30 saniye sürmesi ve tüm bu değişikliklerin ilgili diğer geliştiricilere iletilebilmesi için aynı işlemin 250 defa tekrarlanmasının Linux çekirdeğinin geliştirilmesi yönünde engel teşkil ettiğinin altını çiziyordu. Torvalds'ın hedefi bu süreyi üç saniyeye düşürmekti.[3]

Bunun dışında Torvalds'ın başka tasarım kriterleri de vardı:[4][5]

  • Ne yapılmaması gerektiği konusunda CVS örneği ele alınmalı, şayet kararsız kalınırsa CVS'in sunuduğu çözümün tam tersini yapmalı.
  • BitKeeper'a benzer, ağ üzerinde dağıtık çalışmaya izin veren bir iş akışını desteklemeli.
  • Zararlı kodlar veya yanlış kullanım nedeniyle veri kaybını öneleyecek çok sıkı güvenlik yapıları bulunmalı.

Bu üç kriteri, Monotone dışında o gün piyasada varolan hiçbir sürüm kontrol sistemi yerine getiremiyordu, performans söz konusu olduğunda ise Monotone da eleniyordu. Böylece 2.6.12-rc2 sürümlü linux çekirdeğinin yayınlanmasının hemen ardından Torvalds, kendi sürüm kontrol sistemini yazmaya karar verdi.

Tasarım[değiştir | kaynağı değiştir]

Git tasarımında BitKeeper ve Monotone'dan esinlenilmiştir. Git, aslında Cogito veya StGIT gibi düşük seviyeli bir sürüm kontrol sistem motoru üzerine diğerleri tarafından arayüz yazılabilecek şekilde tasarlanmıştır. Ancak çekirdek git projesi doğrudan kullanılabilecek tam bir sürüm kontrol sistemi haline gelmiştir.

Kısaca Git kavramları ve işlemleri[değiştir | kaynağı değiştir]

Git, dağıtık bir sürüm kontrol sistemidir, klasörler içinde dosyaları olan ve init veya clone kumandaları ile kurulan git repository, yani git dosya depoları vardır. Bu depolarda kullanıcının dosya kümelerinin yerel kopyaları vardır. Depodaki kararlı gövde kümeye master denir, geçici dal kümeler branch olarak adlandırılır. Kullanıcı dosyalar üzerinde değişiklikler yapıp, bunları üzerinde çalışılan kümenin yeni bir sürümü şeklinde depolayarak çalışır. Üzerinde çalışılan kümeye head denir.

Git dosyalar arasında değişiklik içerenleri (modified denenler), otomatik algılayabilir. Git'in takip ettiği dosyalar vardır (tracked), hala sürüm kontrolü altında olmayan başka dosyalar vardır (untracked). Dosyalar ekleme komutu add ile takibe alınabilir, mv ile klasörler arasında taşınabilir, rm ile silinebilirler. Bazı dosyaları git'in umursamaması gerekir, bunların adları .gitignore dosyasına yazılır. Dosyalar add ile depolanmaya hazır gruba eklenir (staged), commit ile açıklama yazısı ekli bir şekilde depolanır. Klasörlerdeki metinler grep ile arattırılabilir.

Sürümler commit işlemi sırasında üretilmiş hash sayısının ilk 6-7 rakamı ile tanınır. Dosyalardaki değişiklikler listelenebilir (status, log), görüntülenebilir (diff), vaz geçilebilir (undo), baştan alınabilir (reset), bir evvelki haline dönülebilir (revert), yazarı belirtilebilir (blame), odakdaki dosyanın depodaki son hali tekrar getirilebilir (checkout), belli sürümlere isim verilebilir (tag). Bu yerel kümeler arasında eşitleme gerçekleştirilebilir (merge, rebase). Bunlar bağımsız depolar arasında teslimat olarak kabul edilebilir. Uzaktaki ana (origin) depodaki kümelerle senkronizasyon gerçekleştirilebilir (fetch, remote add, pull, push), ya da oradan gelen yama uygulanabilir (am).

Kaynakça[değiştir | kaynağı değiştir]

  1. ^ "Haziran 2013 tarihli eclipse kullanıcı topluluğu anketi". Slideshare. Haziran 2013. 15 Kasım 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Eylül 2013. 
  2. ^ "How Tridge reverse engineered BitKeeper (İngilizce)". 16 Ekim 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Eylül 2013. 
  3. ^ "Linus Torvald'sın Kernel SCM saga başlıklı e-posta grubu tartışmasında yazdıkları (İngilizce)". Erişim tarihi: 1 Eylül 2013. 
  4. ^ "Linus Torvald'sın Git e-posta grubuna veri kaybı konusunda yazdıkları (İngilizce)". Erişim tarihi: 1 Eylül 2013. 
  5. ^ "Linus Torvald'sın Mayıs 2007 tarihli Google Tech Talk konuşması (İngilizce)". 23 Aralık 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Eylül 2013. 

Dış bağlantılar[değiştir | kaynağı değiştir]