dev-tools
Sözlük ↗Sürüm Kontrolü (Version Control)
Sürüm kontrolü (veya kaynak kontrolü), belirli sürümlerin daha sonra hatırlanabilmesi, karşılaştırılabilmesi ve geri yüklenebilmesi için bir dosya kümesindeki değişiklikleri zaman içinde kaydeden ve birden fazla kişinin birbirinin çalışmasının üzerine yazmadan aynı kod tabanında çalışabilmesini sağlayan bir sistemdir. Git bugün baskın dağıtık sürüm kontrol sistemidir (çoğu yeni proje için Subversion ve CVS gibi eski merkezi sistemlerin yerini almıştır), tipik olarak GitHub, GitLab veya Bitbucket gibi platformlarda barındırılır. AI/SaaS geliştiricileri için önemi: sürüm kontrolü, modern geliştirme araç zincirindeki her şeyin üzerine oturduğu temeldir — CI/CD, commit'ler ve çekme istekleri tarafından tetiklenir, kod incelemesi diff'ler üzerinde gerçekleşir, dağıtımlar belirli commit'lere/etiketlere bağlanır, böylece "üretimde şu anda tam olarak hangi kod çalışıyor" sorusunu her zaman yanıtlayabilirsiniz ve geri almalar sadece "önceki commit'i dağıt" demektir. Bu olmadan, işbirliği bir geliştiriciden sonra pratik olarak imkansız hale gelir ve kötü bir değişiklikten kurtulmak, `git revert` yerine manuel bir arkeoloji demektir. Nasıl çalışır: bir sürüm kontrol sistemi, bir projenin tüm geçmişini bir dizi commit olarak saklar; her biri o noktadaki dosyaların bir anlık görüntüsü artı meta veri (yazar, zaman damgası, mesaj ve üst commit'e/commit'lere bir işaretçi) içerir. Git gibi dağıtık sistemler, her geliştiriciye tüm geçmişin tam bir kopyasını yerel olarak verir, böylece çoğu işlem (geçmişi görüntüleme, dal oluşturma, commit) anında ve çevrimdışı gerçekleşir; başkalarıyla senkronizasyon, paylaşılan bir uzak sunucuya açık push/pull yoluyla olur. Dallanma, bir özelliği kararlı `main` dalından izole olarak geliştirmenizi sağlar; birleştirme bu çalışmayı geri bir araya getirir, sistem çakışmayan değişiklikleri otomatik olarak birleştirir ve çakışmaları bir insanın çözmesi için işaretler. Uygulamalı örnek: bir geliştirici bir SaaS panosuna karanlık mod eklemek istiyor. `main`'den yeni bir dal oluşturmak için `git checkout -b feature/dark-mode` çalıştırır, beş dosyada değişiklik yapar ve `git commit -m "add theme context provider"` ve `git commit -m "wire dark mode toggle into settings page"` ile aşamalı olarak commit yapar. Bu arada bir ekip arkadaşı ilgisiz bir düzeltmeyi `main`'e birleştirir. Geliştirici `git pull origin main` çalıştırır (veya rebase yapar), Git farklı dosyalara dokunduğu için ilgisiz değişiklikleri otomatik olarak birleştirir, dalını gönderir ve bir çekme isteği açar; inceleme sonrası `main`'e birleştirilir — her ara commit'in tam geçmişi `git log` aracılığıyla sonsuza kadar incelenebilir kalır. Altı ay sonra, karanlık mod özelliğinde bir hata ortaya çıkarsa, ekipteki herkes hangi commit'in bunu tanıttığını ve onunla birlikte başka nelerin değiştiğini, kimsenin hafızasına güvenmeden tam olarak izleyebilir.
İlgili terimler