Git’in Arkasındaki Tarih
Git nedir
Git , dosya ve dizinlerde yaptığınız değişiklikleri takip eden bir yazılımdır. Ve özellikle metin değişikliklerini takip etmede iyidir. Diyelim ki elinizde bir belge var. Bu belgenin 1. sürümüyle başlarsınız. Üzerinde bazı değişiklikler yaparsınız, şimdi sürüm 2’niz olur ve biraz daha değişiklik yaparsınız ve artık sürüm 3’ünüz olur. Git bu üç farklı sürümü sizin için takip eder. Sürümler arasında nelerin değiştiğini görmek için farklı sürümleri karşılaştırmak için ileri geri hareket etmenizi sağlar.
Git , sürüm kontrol sistemi veya kısaca VCS olarak adlandırılır . Git, şimdiye kadar oluşturulmuş ilk sürüm kontrol sistemi değil, başkaları da var. Ve neredeyse hepsinin tek bir temel amacı vardı: kaynak kodunu yönetmek.
Programcılar, özellikler ekledikçe ve hataları düzelttikçe, zaman içinde bilgisayar kodunda yaptıkları değişiklikleri izleyebilmek için bir yol istediler. Böylece sürüm kontrolünü yarattılar. Bu nedenle kaynak kodu yönetim araçları veya kısaca SCM olarak da adlandırılırlar. İki terim oldukça birbirinin yerine kullanılır.
Git’in Arkasındaki Tarih
Git’ten önce gelen Sürüm Kontrol Sistemleri vardı. Bunlardan en popüler ve en etkili olanlarından bahsedeceğiz ve bu Git’i daha iyi anlamamıza yardımcı olabilir.
Bunlardan ilki, Kaynak Kod Kontrol Sistemi için SCCS olarak adlandırılır . 1972’de piyasaya sürüldü ve AT&T tarafından geliştirildi ve Unix işletim sistemi ile ücretsiz olarak paketlendi.
İlkel sürüm kontrolünde, bütçe gibi bir dosyanız olabilir ve bu dosyanın birinci sürümünü, ikinci sürümünü ve üçüncü sürümünü kaydederek her seferinde onlara farklı dosya adları verirsiniz. Şimdi bunu yaptığınızda, belgenin tamamını üç farklı zamanda kaydediyorsunuz. Bunu yapmanın çok verimli bir yolu değil. SCCS’nin yaptığı şey, orijinal belgeyi tutmaktır, ancak daha sonra tüm belgeyi ikinci kez kaydetmek yerine, değişikliklerin ne olduğunun bir anlık görüntüsünü kaydeder. Bu nedenle, bir belgenin beşinci sürümünü istiyorsanız, birinci sürümü alıp beşinci sürüme geçmek için dört değişiklik grubunu uygulamanız yeterlidir. Bu, zaman içindeki değişiklikleri saklamanın çok daha verimli bir yoludur.
Yani SCCS 80’lerin başına kadar baskın kaldı sonra RCSRevizyon Kontrol Sistemi geliştirildi. Ve SCCS üzerinde pek çok iyileştirme yaptı. Birincisi, platformlar arasıydı, oysa SCCS yalnızca Unix’ti. Kişisel bilgisayarın yükselişiyle birlikte, PC’lerde de çalışacak bir sürüm kontrol sistemine sahip olmak önemliydi. Ayrıca daha sezgiseldi, daha az komutla daha temiz bir sözdizimine ve daha fazla özelliğe sahipti. En önemlisi, daha hızlıydı ve hız artışının çoğu, SCCS’den daha akıllı bir depolama stratejisi kullanması gerçeğinden geldi. SCC’lerin orijinal dosyayı sakladığını ve ondan sonra gelen dosyadaki tüm değişiklikleri takip ettiklerini unutmayın. RCS bunu tersine çevirdi, bu yüzden en son dosyayı tüm biçiminde tuttu ve zamanda geriye gitmek istiyorsanız, önceki sürümleri istediniz, sonra tersine gitmek için değişiklik anlık görüntülerini uyguladınız.
Düşünürseniz, bu çok daha hızlı çünkü çoğu zaman çalışmak istediğimiz şey mevcut belgedir. SCCS ile mevcut belgeyi istiyorsak ve 20 takım değişiklik varsa, orijinali yukarı çekmeniz ve ardından 20 takım değişiklik uygulanırken beklemeniz gerekiyordu. RCS ile sadece mevcut dosyayı getirebilirsiniz ve bu dosya zaten tam durumunda depolanmıştır.
Hem SCCS hem de RCS ile ilgili sorunlardan biri, tek seferde yalnızca tek bir dosyayla çalışmanıza izin vermeleriydi. Böylece değişiklikleri tek bir dosyada izleyebilirsiniz, ancak dosya kümelerinde veya tüm projede izleyemezsiniz.
CVS veya Eşzamanlı Sürümler Sistemi bunu yapmanıza izin verdi. Şimdi CVS’deki gerçek yenilik sadece birden fazla dosya ile çalışabilmeniz değil. Eşzamanlı kısımdır. Kod deposu olarak adlandırılan kodumuzu saklayabileceğimiz bir yerimizin olması ve bunu uzak bir sunucuya koyabilmeniz ve birden fazla kullanıcının aynı dosya üzerinde aynı anda çalışabilmesi. Eş zamanlı olarak çalışabilirler.
Önceki sürümlerde, bir dosyayla aynı anda yalnızca bir kişi çalışabilirdi. Böylece CVS, kullanıcıların çalışmalarını paylaşabilmeleri ve diğer kişilerin yaptığı ve uzak depoya yerleştirdiği değişikliklerle dosyalarını güncelleyebilmeleri için birçok özellik ekler.
Uzak depolarla çalışma fikri, Apache Subversion veya SVN ile daha da geliştirildi kısaca. SVN, CVS’den daha hızlıydı ve CVS’nin bunu yapamadığı resimler gibi metin olmayan dosyaların kaydedilmesine izin verdi. En önemlisi, SVN’nin en büyük yeniliği, yalnızca tek dosyalardaki veya dosya gruplarındaki değişiklikleri değil, aynı zamanda bir dizinde neler olduğunu bir bütün olarak izlemesiydi. Dosyaları ve dizinleri toplu olarak izleyen ve aslında dizinin anlık görüntüsünü alan CVS, değişiklikleri uygulamak veya geri okumak için dosyaları birer birer günceller. Bunun yerine SVN, bu işlemsel taahhüdü yapar ve dizinde meydana gelen tüm değişiklikleri uygular veya bunların hiçbirine uygulanmaz. Anlık görüntü, yalnızca tek tek dosyalardan daha büyüktü, bir dizinin tamamı veya bir kerede bu dizinde meydana gelen değişikliklerin tamamıydı. Bu ince ama önemli bir fark.
Şimdi SVN, çok uzun bir süre en popüler sürüm kontrol sistemi olarak kaldı. Aslında Git çıkana kadar . Ancak araya giren başka bir Sürüm Kontrol Sistemi var ve bu BitKeeper SCM idi. Kapalı kaynak, tescilli bir kaynak kodu yönetim aracıydı. BitKeeper’ın sahip olduğu önemli özelliklerden biri ve ilk sahip olan o değildi, ancak bu dağıtılmış sürüm kontrolü .
Buna gelmeden önce, kapalı kaynak olma fikri hakkında biraz daha konuşalım, bir süredir baktığımız diğer tüm olanlar açık kaynaktı. BitKeeper’ın topluluk sürümü ücretsizdi ve birkaç özelliği daha az ve bazı kullanım kısıtlamaları vardı. BitKeeper’ın ücretli sürümü vardı ama ücretsiz olarak dağıttıkları topluluk sürümü de vardı. Ve bu sürüm, 2002’den 2005’e kadar Linux çekirdeğinin kaynak kodu yönetimi için kullanıldı. Linux çekirdeği için özel bir SCM kullanmak tartışmalıydı çünkü Linux çekirdeği açık kaynaklı bir projeydi. SCM’nin bir şirkete ait olduğu ve kontrol edildiği yerde hiç kimse ona sahip değildir. Pek çok kişi, peki ya gelecekte kuralları değiştirirlerse? Bu şirketin yazılımını kullanmak zorunda kalacağız.
Öyleyse tahmin et? Nisan 2005’te topluluk sürümü ücretsiz olmayı bıraktı ve tüm bu tahminler gerçekleşti. Bu yüzden BitKeeper hiçbir zaman CVS veya SVN kadar popüler olmadı, ancak Git’in yaratılmasıyla önemliydi . Çünkü Nisan 2005’te topluluk sürümünün ücretsiz olmayı bıraktığı zaman, Git’in doğduğu nokta budur.
Git , Linux’u yaratan kişi olan Linus Torvalds tarafından yaratıldı. BitKeeper ücretsiz olmayı bıraktığında, kaynak kodlarını yönetmek için bir alternatife ihtiyaçları vardı. Linus etrafına bakındı ve CVS ve SVN gibi orada bulunan diğer VSC’leri beğenmedi. BitKeeper’ın bazı konseptlerini beğendi ama daha da iyisini yapabileceğini düşündü. Böylece sıfırdan yeni bir sürüm kontrol sistemi yazdı ve bu Git’ti.
Git , BitKeeper gibi dağıtılmış sürüm kontrolüdür. Dağıtılmış sürüm kontrolü hakkında daha fazla konuşacağız. Aynı zamanda açık kaynak kodlu ve ücretsiz, bu bizim için harika çünkü sizin ve benim gibi insanların ücretsiz olarak indirebileceği, ücretsiz kullanabileceği ve hiçbir lisans ücreti veya benzeri bir şey olmadığı anlamına geliyor. Ayrıca açık kaynak olduğu için topluluk kaynak kodunu görebilir ve ona katkıda bulunabilir. Açık kaynaklı bir proje olduğu için hata düzeltmeleri gönderebilir, yeni özellikler ekleyebilir, elde ettiğimiz tüm bu faydaları sağlayabilirler.
Ayrıca Linux, macOS ve Windows gibi çoğu platformla uyumludur. Ve diğer birçok kaynak kodu yönetim aracından daha hızlıdır. Bazı işlemler için bazı durumlarda yüz kat daha hızlı. Ayrıca, veri bozulmasına karşı koruma sağlamak için yerleşik daha iyi güvenlik korumalarına sahiptir. Şimdi bu iyileştirmelerin hepsi işe yaradı. Git büyük bir hit oldu. İnsanlar dağıtılmış sürüm kontrolünün gücünü keşfettikçe Git’in tüm güzel özelliklerine alıştıkça Git’in popülaritesinde bir patlama yaşadı.