TR EN

1.1 Başlangıç - Sürüm Kontrolü Hakkında Orjinal Metin

Bu bölüm Git'e başlangıç yapmaktadır. Sürüm kontrol araçları hakkında temel bilgiler vererek başlayacağız sonra Git'i bilgisayarınızda nasıl çalıştıracağınız ve onunla çalışmaya başlamak için neler yapacağınızı anlatacağız. Bölümün sonunda Git'in ne işe yaradığını, neden kullanmanız gerektiğini ve tüm kurulumu nasıl yapacağınızı öğrenmiş olacaksınız.

Sürüm Kontrolü Hakkında

"Sürüm kontrolü" nedir ve ne için kullanılır? Sürüm kontrolü bir dosyada veya dosyalarda zaman içinde yapılan değişiklikleri kaydeden ve önceki hallerinden (sürümlerinden) istediğinize daha sonra geri dönebilmenizi sağlayan sistemdir. Bu kitaptaki örneklerde sürüm kontrolü yapmak için yazılım kaynak kodlarını kullanacaksınız ama bunu istediğiniz hemen her dosya türünde de yapabilirsiniz.

Bir grafik veya web tasarımcısıysanız ve bir resmin veya şablonun tüm sürümlerini saklamak isterseniz (büyük ihtimal istersiniz) bir Sürüm Kontrol Sistemi (VCS-Version Control System) kullanmak en akıllı davranıştır. Dosyaları eski hallerinden birine döndürebilir, tüm projenizi eski hallerinden birine döndürebilir, zaman içindeki değişiklikleri karşılaştırır, sorun çıkaran bir dosyayı en son kimin değiştirdiğini görebilir, bir sürümü kimin ne zaman kaydettiğini öğrenebilirsiniz vb. Bir VCS kullandığınızda yanlışlıkla yaptığınızda ya da dosyaları kaybettiğinizde kolayca kurtarmanızı sağlar. Üstelik bütün bunları çok küçük bir masrafla elde edersiniz.

Yerel Sürüm Kontrol Sistemleri

Pek çok insan sürüm kontrol yöntemi olarak dosyaları başka bir klasöre (zeki olanlar muhtemelen tarihle isimlendirilen bir klasöre) kopyalar. Bu yaklaşım çok yaygın çünkü çok basit fakat inanılmaz derecede hatalara açıktır. Hangi klasörde olduğunuzu unutup istemeden yanlış dosyaya yazabilir veya istemediğiniz dosyaların üzerine kopyalayabilirsiniz.

Bu sorunu çözmek için programcılar uzun zaman önce sürüm kontrolü yapılan dosyalardaki değişiklikleri basit bir veri tabanında tutan yerel VCS'leri geliştirdiler.

Yerel sürüm kontrol şeması
Yerel sürüm kontrolü.

Yaygın VCS araçlarından biri hala bir çok bilgisayarla birlikte dağıtılan RCS adlı sistemdi. Mac OS X işletim sistemi bile Geliştirici Araçlarını kurduğunuzda rcs komutuyla gelir. RCS yamaları (dosyalar arasındaki farkları) özel bir şekilde diske kaydeder; tüm yamaları uygulayarak dosyanın geçmişteki bir halini yeniden oluşturabilir.

Merkezi Sürüm Kontrol Sistemleri

Başka bir sorun da farklı sistemlerde çalışan geliştiricilerin birlikte çalışma ihtiyacıdır. Bu problemi çözmek için Merkezi Sürüm Kontrol Sistemleri (CVCS-Centralized Version Control Systems) geliştirildi. Bu sistemlerde, CVS, Subversion ve Perforce gibi, sürümü takip edilen tüm dosyaları içeren bir sunucu vardır ve istemciler dosyaları bu merkezden seçip alır (checkout). Uzun yıllar bu yöntem sürüm kontrolü standardı oldu.

Merkezi sürüm kontrol şeması
Merkezi sürüm kontrolü.

Bu yöntemin özellikle yerel VCS'lere göre avantajları vardır. Mesela, belli bir seviyeye kadar herkes kimin projede ne yaptığını bilir. Yöneticiler kimin ne yapabileceğini belirleyebilir; bunu yönetmek, her kullanıcının yerel veri tabanıyla uğraşmaktan çok daha kolaydır.

Ancak bu sistemin de ciddi sıkıntıları vardır. En belirgin sorun, merkezi sunucunun arızalanmasıdır. Sunucu bir saat çalışmasa bu süre içinde kimse paylaşım yapamaz veya değişikliklerini kaydedemez. Merkezi veri tabanı çökerse ve yeterli yedek alınmadıysa her şeyi kaybedersiniz - kişilerin bilgisayarlarındaki anlık görüntüler dışında projenin tüm geçmişi kaybolur. Yerel VCS'lerde de aynı sorun vardır - tüm proje geçmişi bir yerde olursa herşeyi kaybetme riski vardır.

Dağıtık Sürüm Kontrol Sistemleri

Burada Dağıtık Sürüm Kontrol Sistemleri (DVCS-Distributed Version Control Systems) devreye girer. Bir DVCS'te (Git, Mercurial, Bazaar veya Darcs gibi) istemciler dosyaların en son anlık görüntülerini değil deponun tamamını alır. Böylece bir sunucu bozulursa istemcilerden biri depoyu yeniden yükleyebilir. Her kopya tüm verilerin tam yedeğini almaktadır.

Dağıtık sürüm kontrol şeması
Dağıtık sürüm kontrolü.

Daha da ilerisi, bu sistemlerin çoğu, aynı projede aynı anda çeşitli grupların birlikte çalışmasını sağlayacak şekilde çok sayıda uzak depoları da yönetebilir. Bu durum, merkezi sistemlerin (hiyerarşik modeller gibi) yapamadığı çok sayıda iş akışı türüyle çalışmanıza imkan tanır.

önceki | sonraki