Git’in 20 Yılına Dönüp Bakış – Hâlâ Tuhaf, Hâlâ Harika Bir Araç
(blog.gitbutler.com)- Git, 20 yıl önce Linus Torvalds’ın ilk commit’iyle başlayan bir sürüm kontrol sistemidir.
- Başlangıçta basit bir kişisel projeydi, ancak daha sonra dünya genelinde en yaygın kullanılan sürüm kontrol sistemi haline geldi.
- Yazar, GitHub’ın kurucu ortaklarından biridir ve Git ile ilgili kitaplar ve topluluklar oluşturarak Git’in gelişiminde derin biçimde yer aldı.
- İlk zamanlarda basit bir dizin içeriği yönetim aracıydı, ancak bugün yazılım geliştirmenin şeklini değiştiren temel bir araç haline geldi.
Git’in felsefesi ve neden gerekli olduğu
- Git, Linux çekirdeği topluluğunda mevcut sürüm kontrol araçlarının sınırlamalarına duyulan memnuniyetsizlikten doğdu.
- O dönemdeki işbirliği yöntemi, mailing list’ler ile tarball ve patch dosyaları üzerinden yürüyen dağıtık ve yerel tabanlı bir işbirliğiydi.
- O zamanki SCM araçları yavaş, merkezi ve verimsizdi; bu yüzden tarball/patch tabanlı yaklaşım daha iyiydi.
- Bitkeeper adlı araç bir alternatifti, ancak lisans sorunları nedeniyle Git’in geliştirilmesine başlandı.
- Git, en başından bir "sürüm kontrol sistemi" olarak değil, patch ve tarball’ları daha iyi işlemek için tasarlanmış bir veri yapısı olarak kurgulandı.
Git’in ilk commit’i
- İlk commit, son derece temel bir dizin içeriği izleme aracıydı.
- O dönemki araçlar
git commitgibi komutlar değil,write-tree,commit-treegibi düşük seviyeli veritabanı araçlarıydı. - Git daha en başından şu yeteneklere sahipti:
- Çalışma dizinini önbelleğe kaydetmek (
update-cache) ve onu bir ağaç nesnesine dönüştürerek (write-tree) veritabanına yazmak - Değişiklikleri commit biçiminde saklamak (
commit-tree) ve geçmiş oluşturmak - Veritabanı nesnelerini
cat-file,read-tree,show-diffile okumak ve karşılaştırmak
- Çalışma dizinini önbelleğe kaydetmek (
- Linus, Git’i yalnızca bir arka uç "plumbing" aracı olarak görüyor, kullanıcı arayüzünün ise dışarıdan yapılmasını istiyordu.
Git ile içerik dağıtımına bir örnek
- Yazar, 2005 yılında Reactrix adlı bir startup’ta dijital reklam içeriği dağıtmak için Git kullandı.
- Yüzlerce dijital ekranın her birinin farklı reklam kombinasyonlarına sahip olması gerekiyordu ve Git’in content-addressing özelliği bunu verimli biçimde çözdü.
- Bu, Git’in kod yönetimi için değil, içerik dağıtım aracı olarak kullanıldığı yaratıcı bir örnekti.
- İlk Git projesinin başlıca katkıcılarından Nick Hengeveld, SSL, paralel HTTP aktarımı gibi özellikler ekledi.
- Bu deneyim, Git ile ilgili dokümantasyon, web siteleri ve kitaplar hazırlamanın çıkış noktası oldu; oradan da GitHub’a uzandı.
Git komutları ve kullanıcı araçlarının evrimi
- Git’in ilk dönem komutlarının tamamı düşük seviyeli, betik tabanlı araçlardı ve bugünkünden oldukça farklıydı.
git log,git rebase,git commitgibi komutlar da başlangıçta basit shell script’lerdi; zamanla gelişerek bugünkü biçimlerine kavuştular.
git logun ilk sürümü
git log,git-rev-list --pretty HEAD | lessbiçiminde basit bir betikti.rev-list, bugün de varlığını sürdüren, commit ID’lerini çıktılamak için kullanılan bir araçtır.
git rebasein ortaya çıkışı
rebasekavramı, 2005 yılında Linus ile Junio Hamano arasındaki bir e-posta konuşmasında doğdu.- Junio’nun çalışma biçimi, mevcut HEAD’i bırakıp yeni bir HEAD’i temel alarak çalışmayı sürdürmekti ve bunu "rebase" olarak ifade etti.
- Bu yaklaşım, bugün bildiğimiz
git rebasekomutuna dönüştü.
Octocat’in kökeni
- GitHub’ın simgesi Octocat, Git’teki "octopus merge" stratejisinden ilham aldı.
- Birden fazla branch’i aynı anda birleştiren bu stratejiye "octopus" deniyordu; GitHub’ın ilk dönemlerinde de bu kelimeden esinlenilerek Octocat karakteri ortaya çıktı.
Git’in bugünü ve geleceği
- Yazar, Git’i hâlâ orijinal amacına uygun biçimde, "stupid content tracker" olarak kullanıyor.
- GitButler projesi, Git’i bir projenin geçmişini izleme ve kaydetme yöntemi olarak kullanıyor.
- Git hâlâ güçlü bir içerik izleme ve dağıtık sistem; gelecekte de çok farklı biçimlerde kullanılma potansiyeline sahip.
- Doğum günün kutlu olsun, Git. Hâlâ tuhaf, hâlâ harika bir araç
6 yorum
Git'in 20. yaş gününü kutlarız.
Tebrikler
Doğum günün kutlu olsun. Büyüğünün sözünü dinleyip uzun uzun sağlıklı yaşamalısın.
Doğum günün kutlu olsun ^^
Garip şekilde insanı gaza getiren bir paylaşım bu.
Hacker News görüşleri
Git'in kökenine dair anlatılar, Linus'u peygamber gibi tasvir etme eğiliminde
2002 civarında projenin her parçasını benzersiz bir hash koduyla etiketleme fikrine sahiptim
Git'i ClearCase'e alternatif olarak kullanmaya başladım
Git'in sadece 20 yaşında olması şaşırtıcı
Tarihsel bağlamı öğrenmek ilginçti
Amaç, verimli bir tarball geçmiş veritabanı aracı yapmaktı; bir sürüm kontrol sistemi geliştirme niyeti yoktu
Commit'lerin ssh anahtarıyla imzalanabildiğini öğrendim
Faydalı makale için teşekkürler; Git'in iç yapısına giriş de içeren bir depoyu öneriyorum
Mailing list üzerinden iş birliğine dair bir blog yazısı yazma fikri ilginç
Çeşitli kaynak kontrol sistemleri arasında Git kullanılabilirliği en kötü ama en sevdiğim sistem