Git Repo Raksasa dengan GVFS

Soeleman 6 Februari 2017

Git Repo Raksasa dengan GVFS

Sebuah repo dengan file sebanyak 3.5 juta dan ukurannya lebih dari 270GB tentu bukan repo yang umum kita temui. Git client tidak pernah di desain bekerja di level seperti itu, GitHub saja merekomendasikan ukuran repo sekitar 1GB. Repo yang tidak biasa itu pastinya akan bermasalah. Menggunakan perintah git status dari repo ini memerlukan waktu sekitar 8 menit dan untuk git commit perlu 30 menit. Benar-benar jadi masalah kalau seperti ini.

Repo yang di maksud adalah repo-nya Windows(terdiri dari Windows for PC, Mobile, Server, Hololens, Xbox, IOT dan lainnya). Dan Microsoft tidak sendiri untuk masalah seperti ini. Mercurial di Facebook juga mengalami masalah yang sama seperti pada tulisan Scaling Mercurial at Facebook. Google juga mengalami hal yang sama(Google Is 2 Billion Lines of Code—And It’s All in One Place).

alt text

Dan seperti ini waktu yang diperlukan untuk bekerja dengan repo itu. Selesai tidur siang pun belum selesai apalagi dengan kualitas internet Indonesia.

alt text

Git Virtual File System

Pada konferensi Git Merge 2017, Microsoft memperkenalkan Git Virtual File System (GVFS). Dan ini open source, bisa di lihat GVFS user mode client code. Saat ini hanya untuk Windows, belum di porting ke OS lain.

GVFS akan mem-virtualizes file-file yang ada di-repo Git sehingga Git dan tool lainnya akan melihat repo seperti biasa. Padahal GVFS hanya akan mengambil object file bilamana diperlukan saja. Jadi dalam repo yang besar, developer hanya mengambil object file yang diperlukan saja, dengan begitu waktu untuk perintah Git lainnya jadi lebih cepat.

Penggunaan Git dalam Microsoft memiliki kecenderungan yang meningkat, terlihat pada chart di bawah. Oleh karena itu menarik membaca kenapa GVFS ini ada, lihat ke Scalling Git.

alt text

GVFS bukan tool untuk semua orang, tapi ini mungkin jadi standard kedepannya.

Referensi