Epic Games הפיכה את מערכת בקרת הגרסאות המרכזית שלה, Lore, לקוד פתוח, שנכללה בעבר בערכת הכלים של Unreal Editor for Fortnite (UEFN) תחת השם Unreal Revision Control. המערכת מותאמת לשימוש בפיתוח פרויקטים המשלבים קוד מקור עם קבצים גדולים מאוד שאינם טקסט. לדוגמה, Lore מתאימה לפיתוח משחקי מחשב, הדורש עבודה שיתופית על נכסים כגון טקסטורות, מודלים תלת-ממדיים ונתוני קול. מכיוון שמיזוג גרסאות שונות של קבצים שאינם טקסט הוא בעייתי, שיתוף הפעולה מאורגן על ידי הגדרת נעילה בלעדית, המונעת מתורמים מרובים לערוך את המשאב בו זמנית. קוד הפרויקט כתוב ב-Rust ומופץ תחת רישיון MIT.
המערכת ניתנת להרחבה עבור צוותים בגדלים שונים וניתן להריץ אותה במחשב של מפתח על ידי הפעלת קובץ הפעלה יחיד ללא תלויות חיצוניות, או לפרוס אותה כשרת מרכזי לתיאום עבודתם של צוותים גדולים מאוד.
לור מורכבת משתי מערכות: תת-מערכת לאחסון נתונים ותת-מערכת לבקרת גרסאות האחראית על יצירת תיקונים, ענפים ופעולות מיזוג.
תת-מערכת האחסון מורכבת משני מנועי אחסון: מאגר תוכן בלתי משתנה עם כתובות גיבוב ומאגר מפתחות/ערכים עבור מטא-נתונים דינמיים, כגון מצביעי ענפים. ניתן לחבר שרתים אחוריים שונים כדי לאחסן נתונים בשרת מרכזי ולהבטיח סבילות לתקלות. לדוגמה, ניתן להשתמש ב-AWS S3 לאחסון מתמשך, וב-DynamoDB עבור מטא-נתונים.
כדי לייצג את מצב המאגר ולהבטיח את חוסר השינוי של שרשרת הגרסאות, נעשה שימוש במבנה עץ מרקל, שבו כל ענף מאמת את כל הענפים והצמתים הבסיסיים באמצעות גיבוב דמוי עץ. נתוני המאגר מטופלים על ידי גיבובי תוכן, מה שמפשט השוואות ובדיקת שלמות. הגיבוב של כל גרסה כולל את המצב המשויך אליה, את הגיבובי של גרסאות האב שלה ואת גיבובי הנתונים. קבצים גדולים מאוחסנים בפרגמנטים.
מסופקות תכונות אופייניות למערכות בקרת גרסאות, כגון commits, טיוטות אחסון זמניות, הסתעפות והערכת שינויים. פונקציונליות מתקדמת כוללת: בקרת גישת משתמשים; פתרון סכסוכים; ביטול כפילויות ברמת הפרגמנט; יכולת לעבוד עם עותק לא שלם של עץ העבודה (נתונים חסרים נטענים לפי הצורך); אחסון במטמון של נתונים מאוחסנים; פעולות הסתעפות קלות ומעבר מהיר בין ענפים (ענפים מיושמים באמצעות קישורים, שאינם מובילים לשכפול נתונים).
מקור: OpenNet.ru
