فائلوں کو ڈپلیکیٹ کیے بغیر موثر ورژن کنٹرول بنانا

ہر ورژن یا فورک (fork) کے لیے فائلوں کی مکمل کاپیاں محفوظ کرنا جگہ ضائع کرتا ہے۔ اگر آپ دس فائلوں والے پروجیکٹ میں ایک لائن تبدیل کرتے ہیں، تو آپ کو تمام دس فائلوں کو دوبارہ محفوظ کرنے کی ضرورت نہیں ہونی چاہیے۔

مجھے اپنے LaTeX Writer پروجیکٹ کی تعمیر کے دوران اس مسئلے کا سامنا کرنا پڑا۔ مجھے زیادہ اسٹوریج لاگت کے بغیر ورژن کنٹرول اور پروجیکٹ فورکنگ کو سنبھالنے کا ایک طریقہ چاہیے تھا۔

میں نے دیکھا کہ GitHub کیسے کام کرتا ہے۔ GitHub ہر بار تبدیلی کرنے پر مکمل ریپوزٹری (repository) محفوظ نہیں کرتا۔ یہ مواد کو الگ سے محفوظ کرتا ہے اور فائلوں اور کمٹس (commits) کو جوڑنے کے لیے ریفرنسز کا استعمال کرتا ہے۔

میں نے اپنا سسٹم تین اہم اجزاء کا استعمال کرتے ہوئے بنایا:

یہ سسٹم کنٹینٹ ہیشنگ (content hashing) کے ذریعے کام کرتا ہے۔ جب آپ ایک فائل محفوظ کرتے ہیں، تو سسٹم مواد کی بنیاد پر ایک منفرد آئی ڈی تیار کرتا ہے۔ اگر وہ مواد پہلے سے موجود ہے، تو سسٹم موجودہ بلوب (Blob) کو ہی دوبارہ استعمال کرتا ہے۔ یہ نیا بلوب نہیں بناتا۔

یہ طریقہ فورکنگ کو آسان اور سستا بناتا ہے۔ جب آپ کسی پروجیکٹ کو فورک کرتے ہیں:

فورک کے دوران فائل کا کوئی اصل مواد کاپی نہیں کیا جاتا۔ آپ صرف چھوٹے میٹا ڈیٹا ریکارڈز کو ڈپلیکیٹ کرتے ہیں۔

جب آپ کسی فورک میں ترمیم کرتے ہیں، تو عمل موثر رہتا ہے:

یہ طریقہ کئی فوائد فراہم کرتا ہے:

آپ کو بھاری اسٹوریج کے بوجھ کے بغیر GitHub جیسی فعالیت حاصل ہوتی ہے۔

ماخذ: https://dev.to/prashant_patil_49/building-github-inspired-version-control-and-forking-without-duplicating-project-files-5aap