ફાઇલોનું ડુપ્લીકેશન કર્યા વિના કાર્યક્ષમ વર્ઝન કંટ્રોલ બનાવવું

દરેક વર્ઝન અથવા ફોર્ક (fork) માટે ફાઇલોની સંપૂર્ણ નકલો સંગ્રહિત કરવાથી જગ્યાનો બગાડ થાય છે. જો તમે દસ ફાઇલો ધરાવતા પ્રોજેક્ટમાં એક લાઇન બદલો છો, તો તમારે ફરીથી બધી દસ ફાઇલો સેવ કરવાની જરૂર નથી.

મારા LaTeX Writer પ્રોજેક્ટ બનાવતી વખતે મને આ સમસ્યાનો સામનો કરવો પડ્યો હતો. મારે ઊંચા સ્ટોરેજ ખર્ચ વિના વર્ઝન કંટ્રોલ અને પ્રોજેક્ટ ફોર્કિંગ હેન્ડલ કરવાની રીત જોઈતી હતી.

મેં GitHub કેવી રીતે કામ કરે છે તે જોયું. જ્યારે તમે કોઈ ફેરફાર કરો છો ત્યારે GitHub દરેક વખતે સંપૂર્ણ રિપોઝિટરી સંગ્રહિત કરતું નથી. તે સામગ્રી (content) ને અલગથી સંગ્રહિત કરે છે અને ફાઇલો તથા કમિટ્સ (commits) ને જોડવા માટે સંદર્ભો (references) નો ઉપયોગ કરે છે.

મેં ત્રણ મુખ્ય ઘટકોનો ઉપયોગ કરીને મારી સિસ્ટમ બનાવી:

આ સિસ્ટમ content hashing દ્વારા કામ કરે છે. જ્યારે તમે ફાઇલ સેવ કરો છો, ત્યારે સિસ્ટમ સામગ્રીના આધારે એક યુનિક ID જનરેટ કરે છે. જો સામગ્રી પહેલેથી જ અસ્તિત્વમાં હોય, તો સિસ્ટમ હાલના Blob નો જ ફરીથી ઉપયોગ કરે છે. તે નવો Blob બનાવતી નથી.

આ અભિગમ ફોર્કિંગને સરળ અને સસ્તું બનાવે છે. જ્યારે તમે પ્રોજેક્ટ ફોર્ક કરો છો:

ફોર્ક દરમિયાન વાસ્તવિક ફાઇલ સામગ્રીની નકલ કરવામાં આવતી નથી. તમે ફક્ત નાના metadata રેકોર્ડ્સનું ડુપ્લીકેશન કરો છો.

જ્યારે તમે ફોર્કને એડિટ કરો છો, ત્યારે પ્રક્રિયા કાર્યક્ષમ રહે છે:

આ પદ્ધતિના ઘણા ફાયદા છે:

તમે ભારે સ્ટોરેજ ઓવરહેડ વિના GitHub જેવી કાર્યક્ષમતા મેળવો છો.

સ્ત્રોત: https://dev.to/prashant_patil_49/building-github-inspired-version-control-and-forking-without-duplicating-project-files-5aap