फाईल्सची पुनरावृत्ती न करता कार्यक्षम व्हर्जन कंट्रोल तयार करणे

प्रत्येक व्हर्जन किंवा फोर्कसाठी (fork) फाईल्सच्या पूर्ण प्रती साठवणे म्हणजे जागेचा अपव्यय आहे. जर तुम्ही दहा फाईल्स असलेल्या प्रोजेक्टमध्ये फक्त एक ओळ बदलली, तर तुम्हाला त्या दहाही फाईल्स पुन्हा सेव्ह करण्याची गरज नाही.

माझा LaTeX Writer प्रोजेक्ट तयार करताना मला या समस्येचा सामना करावा लागला. मला जास्त स्टोरेज खर्च न करता व्हर्जन कंट्रोल आणि प्रोजेक्ट फोर्किंग हाताळण्यासाठी एका मार्गची गरज होती.

मी GitHub कसे काम करते याचा अभ्यास केला. GitHub प्रत्येक वेळी बदल केल्यावर संपूर्ण रिपॉझिटरी (repository) साठवत नाही. ते कंटेंट (content) वेगळा साठवते आणि फाईल्स व कमिट्सना (commits) जोडण्यासाठी संदर्भ (references) वापरते.

मी तीन मुख्य घटकांचा वापर करून माझी सिस्टम तयार केली:

ही सिस्टम 'कंटेंट हॅशिंग' (content hashing) द्वारे काम करते. जेव्हा तुम्ही एखादी फाईल सेव्ह करता, तेव्हा सिस्टम त्या कंटेंटच्या आधारे एक युनिक आयडी (unique ID) तयार करते. जर तो कंटेंट आधीच अस्तित्वात असेल, तर सिस्टम आधीच असलेल्या Blob चा पुनवापर करते. ती नवीन Blob तयार करत नाही.

या पद्धतीमुळे फोर्किंग करणे सोपे आणि स्वस्त होते. जेव्हा तुम्ही एखादा प्रोजेक्ट फोर्क करता:

फोर्क दरम्यान फाईलचा प्रत्यक्ष कंटेंट कॉपी केला जात नाही. तुम्ही फक्त लहान मेटाडेटा रेकॉर्ड्सची डुप्लिकेट कॉपी तयार करता.

जेव्हा तुम्ही फोर्क एडिट करता, तेव्हा ही प्रक्रिया कार्यक्षम राहते:

या पद्धतीचे अनेक फायदे आहेत:

तुम्हाला स्टोरेजचा मोठा भार न घेता GitHub सारखी कार्यक्षमता मिळते.

स्रोत: https://dev.to/prashant_patil_49/building-github-inspired-version-control-and-forking-without-duplicating-project-files-5aap