Sürüm kontrolü, bir yazılımın kaynak kodunda yapılan her değişikliğin kim tarafından, ne zaman ve neden yapıldığıyla birlikte kaydedilmesini ve gerektiğinde önceki bir duruma dönülebilmesini sağlayan sistemdir; Git bunun en yaygın aracıdır.
Sürüm kontrolü, kodun tarihçesini tutan bir kayıt defteridir. Geliştirici bir değişiklik yaptığında bunu kısa bir açıklamayla kaydeder (commit); sistem, kodun o andaki halini saklar. Böylece herhangi bir dosyanın geçmişteki her sürümü görülebilir, iki sürüm arasındaki fark satır satır karşılaştırılabilir ve hatalı bir değişiklik geri alınabilir. Git, bu işi yapan açık kaynaklı araçtır; GitHub, GitLab ve Bitbucket gibi hizmetler Git depolarını internette barındırır ve ekip çalışmasını kolaylaştırır. Birden fazla geliştirici aynı projede farklı dallarda (branch) çalışır ve işleri bittiğinde birleştirir.
İşletme sahibi için neden önemli
Sürüm kontrolü olmayan bir projede kod, geliştiricinin bilgisayarında ya da sunucuda tek kopya halinde durur. Bilgisayar bozulursa, geliştirici ayrılırsa ya da hatalı bir güncelleme yapılırsa geri dönülecek bir nokta yoktur. Git kullanımı, projenin kimseye bağımlı olmadan sürdürülebilmesinin ve bir sorun anında son çalışan sürüme dönülebilmesinin altyapısıdır. Ayrıca staging ve canlıya alma süreçleri de bu kayıtlar üzerinden yürür.
Örnek
Bir sigorta acentesinin web sitesinde yapılan bir güncelleme sonrası teklif formu çalışmaz oluyor. Geliştirici Git geçmişine bakıp son üç değişikliği karşılaştırıyor, sorunu tek satırlık bir hatada buluyor ve önceki sürüme birkaç dakikada dönüyor. Aynı projede sürüm kontrolü olmasaydı, hatanın kaynağını bulmak sitenin tamamını incelemeyi gerektirecekti.
Sık yapılan hata
Git'i yalnızca yedekleme aracı sanmaktır. Git kodun tarihçesini tutar ama veritabanını, yüklenen görselleri ve sunucu ayarlarını içermez; bunlar için ayrı yedekleme gerekir. İkinci hata, deponun yalnızca bir geliştiricinin kişisel hesabında durmasıdır; erişim işletme adına ya da firma hesabında tanımlı olmalıdır. Üçüncü hata, şifre ve API anahtarlarını kodla birlikte depoya koymaktır; bu bir güvenlik açığıdır.
Teklif alırken sorulacak soru
Proje kodu sürüm kontrolüyle mi yönetilecek ve depo hangi hesapta tutulacak? Canlıya alma işlemi doğrudan sunucuda mı yapılacak, yoksa sürüm kontrolünden geçerek mi?
Sık sorulanlar
Git kullanmak projeyi pahalılaştırır mı?
Hayır. Profesyonel geliştirme süreçlerinin standart parçasıdır ve barındırma hizmetlerinin çoğu küçük ekipler için ücretsiz katman sunar. Asıl maliyet, kullanılmadığında ortaya çıkar.
Git depom bende olursa kodun sahibi ben mi olurum?
Depoya erişim ile kodun mülkiyeti farklı konulardır. Kodun kime ait olduğu ve hangi haklarla kullanılacağı sözleşmede yazar; Git yalnızca kodun tarihçesini tutan araçtır.