בניית בקרת גרסאות יעילה ללא שכפול קבצים

שמירת עותקים מלאים של קבצים עבור כל גרסה או fork מבזבזת שטח אחסון. אם אתה משנה שורה אחת בפרויקט עם עשרה קבצים, אתה לא אמור לשמור שוב את כל עשרת הקבצים.

נתקלתי בבעיה זו בזמן בניית פרויקט ה-LaTeX Writer שלי. נזקקתי לדרך לנהל בקרת גרסאות ו-forking של פרויקטים ללא עלויות אחסון גבוהות.

בדקתי איך GitHub עובד. GitHub לא שומר מאגר (repository) מלא בכל פעם שאתה מבצע שינוי. הוא שומר את התוכן בנפרד ומשתמש במפנים (references) כדי לקשר בין קבצים ו-commits.

בניתי את המערכת שלי באמצעות שלושה רכיבים עיקריים:

המערכת עובדת באמצעות content hashing. כשאתה שומר קובץ, המערכת מייצרת מזהה ייחודי המבוסס על התוכן. אם התוכן כבר קיים, המערכת משתמשת מחדש ב-Blob הקיים. היא לא יוצרת חדש.

גישה זו הופכת את ה-forking לקל וזול. כשאתה מבצע fork לפרויקט:

שום תוכן קובץ בפועל לא מועתק במהלך fork. אתה רק משכפל את רשומות ה-metadata הקטנות.

כשאתה עורך fork, התהליך נשאר יעיל:

לשיטה זו מספר יתרונות:

אתה מקבל פונקציונליות דמוית GitHub ללא עומס האחסון הכבד.

מקור: https://dev.to/prashant_patil_49/building-github-inspired-version-control-and-forking-without-duplicating-project-files-5aap