Epic Games 已將其集中式版本控制系統 Lore 開源。該系統先前以 Unreal Revision Control 的名稱包含在 Unreal Editor for Fortnite (UEFN) 工具包中。 Lore 針對開發包含原始碼和大型非文字檔案的專案進行了最佳化。例如,Lore 適用於需要協作處理紋理、3D 模型和聲音資料等資源的電腦遊戲開發。由於合併不同版本的非文字檔案存在許多問題,Lore 透過設定獨佔鎖來組織協作,防止多個貢獻者同時編輯資源。該專案的程式碼使用 Rust 編寫,並以 MIT 許可證發布。
該系統可擴展,適用於不同規模的團隊,既可以在開發人員的電腦上運行單一可執行檔而無需外部依賴項,也可以部署為集中式伺服器來協調大型團隊的工作。
Lore 由兩個系統組成:資料儲存子系統和版本控制子系統,負責建立修訂、分支和合併作業。
記憶體子系統由兩個儲存引擎組成:一個採用雜湊定址的不可變內容儲存和一個用於動態元資料(例如分支指標)的鍵值儲存。可連接各種後端,將資料儲存在集中式伺服器上,確保容錯能力。例如,可以使用 AWS S3 進行持久化存儲,使用 DynamoDB 儲存元資料。
為了表示儲存庫的狀態並確保版本鏈的不可變性,我們使用了默克爾樹結構。在該結構中,每個分支都使用樹狀雜湊來驗證所有底層分支和節點。儲存庫資料透過內容雜湊進行尋址,簡化了比較和完整性檢查。每個版本的雜湊值都包含其關聯的狀態、其父版本的雜湊值以及資料雜湊值。大型文件以片段的形式儲存。
版本控制系統的典型功能包括提交、暫存草稿、分支和變更評估。進階功能包括:使用者存取控制;衝突解決;片段級去重;能夠處理工作樹的不完整副本(根據需要載入缺失資料);儲存資料的快取;輕量級分支操作和分支間的快速切換(分支透過連結實現,不會導致資料重複)。
來源: opennet.ru
