Bu neden önemli?
Sürüm kontrolü çoğumuz için 'Git' demek. Ama oyun, film ya da yapay zekâ modelleri gibi büyük dosyalarla çalışan projelerde bu mesele hâlâ çözülmüş değil.
Git neden zorlanıyor?
Sürüm kontrolü, bir projedeki her değişikliği kaydeden sistem. Geri dönebilir, başkalarıyla aynı anda çalışabilir, kimin neyi değiştirdiğini görebilirsin. Yazılımda bunun neredeyse tek adı Git.
Git kod için tasarlandı: çok sayıda küçük metin dosyası, her seferinde birkaç satırlık değişiklik. Oyun projeleri bunun tam tersi. İçlerinde tek başına yüzlerce megabayt, hatta gigabaytlarca tutan dokular, ses dosyaları, videolar ve 3D modeller var. Bunlar ikili (binary) dosyalar, yani metin gibi satır satır karşılaştırılamıyorlar.
Git’te büyük bir dosyayı her değiştirdiğinde, geçmişte bir kopyası daha birikiyor. Depo şişiyor, klonlamak uzuyor. Bunun için Git LFS geliştirildi. Büyük dosyaları ayrı bir yerde tutup Git’e sadece bir işaret bırakıyor. İşe yarıyor ama sonradan eklenmiş bir yama gibi duruyor.
Oyun stüdyolarının çoğu bu yüzden Perforce kullanıyor. Güçlü ama pahalı ve karmaşık.
Lore ne yapıyor?
Epic Games, Lore’u Rust ile yazdı ve MIT lisansıyla açık kaynak olarak yayımladı. Temel fikirleri şöyle:
Dosyaları parçalara bölmek. Lore büyük bir dosyayı tek bir blok olarak saklamıyor. Onu küçük parçalara (chunk) ayırıyor, her parçaya içeriğinden türetilen bir kimlik veriyor. Bir dosyanın sadece küçük bir kısmı değiştiyse, yalnızca o parçalar yeniden saklanıyor. Geri kalanı eski sürümle ortak kullanılıyor. Buna tekilleştirme (deduplication) deniyor.
Merkezi ama yerelde hızlı. Git’te herkesin bilgisayarında projenin tam bir kopyası var (dağıtık). Perforce’ta ise tek bir sunucu var ve çoğu işlem sunucuya gidiyor (merkezi). Lore ikisinin arasında duruyor. Asıl kayıt tek bir sunucuda, erişim kontrolü de orada. Ama commit, dal açma, dallar arası geçiş gibi günlük işler bilgisayarında yapılıyor, internete ihtiyaç duymuyor.
Sadece gerekeni indirmek. Devasa bir depoda çalışırken bütün dosyaları indirmek zorunda değilsin. Lore, üzerinde çalıştığın kısmı ihtiyaç oldukça getiriyor.
Videoda tek komutla yerel bir Lore sunucusu açılıyor, 100 MB’lık bir dosya commit ediliyor, dal açılıp geçiş yapılıyor. Komutlar Git kullanan birine tanıdık gelecek kadar benzer.
Henüz erken
Heyecanlanmadan önce bilmen gerekenler:
- Lore henüz 1.0 öncesi. Epic, arayüzlerin ve disk formatının değişebileceğini açıkça yazıyor.
- Kendin barındırıyorsun. GitHub gibi hazır bir barındırma servisi yok.
- Açık kaynak paket kütüphaneyi, sunucuyu, komut satırı aracını ve JavaScript, Python, C#, Go için SDK’ları içeriyor. Masaüstü uygulaması indirilebiliyor ama şimdilik açık kaynak değil.
- Mevcut bir Git deposunu tüm geçmişiyle içeri almak, videoya göre şimdilik mümkün değil.
- Performans iddiaları şu an Epic’in kendi iddiaları. Bağımsız testler henüz az.
Yani üretimdeki bir Perforce kurulumunu yarın değiştirmek için değil, denemek için uygun.
Düşün
- Senin projelerinde Git’in zorlandığı büyük dosyalar var mı? Onları nasıl yönetiyorsun?
- Merkezi bir sunucu mu, herkesin tam kopyası mı? Hangisi sana daha güvenli geliyor?
Bu yazıdaki araçlar Araç Kutusu'nda: Lore