Epic Games, daha önce Unreal Revision Control adı altında Fortnite için Unreal Editor (UEFN) araç setinde yer alan merkezi sürüm kontrol sistemi Lore'u açık kaynaklı hale getirdi. Sistem, kaynak kodunu çok büyük metin dışı dosyalarla birleştiren projelerin geliştirilmesinde kullanılmak üzere optimize edilmiştir. Örneğin, Lore, dokular, 3B modeller ve ses verileri gibi varlıklar üzerinde işbirliği gerektiren bilgisayar oyunu geliştirme için uygundur. Metin dışı dosyaların farklı sürümlerini birleştirmek sorunlu olduğundan, işbirliği, birden fazla katkıda bulunanın kaynağı aynı anda düzenlemesini engelleyen özel bir kilit ayarlanarak düzenlenir. Projenin kodu Rust dilinde yazılmıştır ve MIT lisansı altında dağıtılmaktadır.
Sistem, farklı büyüklükteki ekipler için ölçeklenebilir olup, harici bağımlılıklar olmadan tek bir yürütülebilir dosya çalıştırılarak bir geliştiricinin bilgisayarında çalıştırılabilir veya çok büyük ekiplerin çalışmalarını koordine etmek için merkezi bir sunucu olarak dağıtılabilir.
Lore iki sistemden oluşur: veri depolama alt sistemi ve revizyonlar, dallanmalar ve birleştirme işlemleri oluşturmaktan sorumlu sürüm kontrol alt sistemi.
Depolama alt sistemi iki depolama motorundan oluşur: karma adreslemeli değişmez içerik deposu ve dallanma işaretçileri gibi dinamik meta veriler için anahtar/değer deposu. Verileri merkezi bir sunucuda depolamak ve hata toleransını sağlamak için çeşitli arka uçlar bağlanabilir. Örneğin, kalıcı depolama için AWS S3 ve meta veriler için DynamoDB kullanılabilir.
Deponun durumunu temsil etmek ve revizyon zincirinin değişmezliğini sağlamak için, her dalın ağaç benzeri karma algoritması kullanarak tüm alt dalları ve düğümleri doğruladığı bir Merkle Ağacı yapısı kullanılır. Depo verileri içerik karmalarıyla ele alınır, bu da karşılaştırmaları ve bütünlük kontrolünü basitleştirir. Her revizyonun karması, ilişkili durumunu, üst revizyonlarının karmalarını ve veri karmalarını kapsar. Büyük dosyalar parçalar halinde saklanır.
Sürüm kontrol sistemlerine özgü özellikler sunulmaktadır; bunlar arasında commit'ler, taslakların hazırlanması, dallanma ve değişiklik değerlendirmesi yer almaktadır. Gelişmiş işlevler şunları içerir: kullanıcı erişim kontrolü; çakışma çözümü; parça düzeyinde veri tekilleştirme; çalışma ağacının eksik bir kopyasıyla çalışma yeteneği (eksik veriler gerektiğinde yüklenir); depolanan verilerin önbelleğe alınması; hafif dallanma işlemleri ve dallar arasında hızlı geçiş (dallar, veri tekrarına yol açmayan bağlantılar aracılığıyla uygulanır).
Kaynak: opennet.ru
