𝗠𝗲𝗺𝗯𝗶𝗻𝗮 𝗞𝗮𝘄𝗮𝗹𝗮𝗻 𝗩𝗲𝗿𝘀𝗶 𝘆𝗮𝗻𝗴 𝗖𝗲𝗸𝗮𝗽 𝗧𝗮𝗻𝗽𝗮 𝗠𝗲𝗻𝗱𝘂𝗽𝗹𝗶𝗸𝗮𝘀𝗶 𝗙𝗮𝗶𝗹

Menyimpan salinan penuh fail bagi setiap versi atau fork membazirkan ruang. Jika anda mengubah satu baris dalam projek yang mempunyai sepuluh fail, anda tidak sepatutnya menyimpan kesemua sepuluh fail itu semula.

Saya menghadapi masalah ini semasa membina projek LaTeX Writer saya. Saya memerlukan cara untuk mengendalikan kawalan versi dan forking projek tanpa kos storan yang tinggi.

Saya melihat bagaimana GitHub berfungsi. GitHub tidak menyimpan repositori penuh setiap kali anda membuat perubahan. Ia menyimpan kandungan secara berasingan dan menggunakan rujukan untuk menghubungkan fail dan commit.

Saya membina sistem saya menggunakan tiga komponen utama:

Sistem ini berfungsi melalui content hashing. Apabila anda menyimpan fail, sistem akan menjana ID unik berdasarkan kandungan tersebut. Jika kandungan itu sudah wujud, sistem akan menggunakan semula Blob yang sedia ada. Ia tidak akan mencipta yang baharu.

Pendekatan ini menjadikan forking mudah dan murah. Apabila anda melakukan fork pada sesuatu projek:

Tiada kandungan fail sebenar disalin semasa fork. Anda hanya menduplikasi rekod metadata yang kecil.

Apabila anda menyunting fork, proses tersebut kekal cekap:

Kaedah ini memberikan beberapa kelebihan:

Anda mendapat fungsi seperti GitHub tanpa bebanan storan yang berat.

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