Geek

Microsoft Creates Open Source GVFS (Git Virtual File System)

Short Bytes: To manage its code more efficiently, Microsoft has created open source Git Virtual File System (GVFS). It’s designed to deal with large Git repos more efficiently by virtualizing the file system in the repo and reducing the time taken to perform critical operations. Now, Microsoft has open sourced the client side source code of GVFS. Notably, Microsoft employs GVFS in its own 300GB Windows Git repository.

Today, Git, the open source distributed version control system created by Linus Torvalds, is being widely used. But, it struggles when codebases grow in size. To counter this problem, Microsoft–the company calls itself a fan of Git–has created GVFS.

GVFS stands for Git Virtual File System. It virtualizes the file system in your repo and makes you feel as if all the files in your repo are present. In actual practice, it just downloads one file at a time.

GVFS manages the size of repo that Git needs to consider while performing tasks like status and checkout. In GVFS, as all these critical operations are carried out at the file system level, the build tools and IDEs need not be changed.

Microsoft was inspired to create GVFS as the company itself used Git. Earlier, the enormous size of Windows codebase made sure that a simple operation like checkout took 3-4 hours. With GVFS, Microsoft was able to solve this issue.

Now, even though there are 3 million files in Windows repo, the developers only need to download and use 50-100K of those files. This makes the whole Git experience more manageable. Now cloning just takes few minutes, checkout takes 30 seconds, and status takes 4-5 seconds.

Microsoft has open sourced the client code of Git Virtual File System and the users can find the source code here on GitHub. The company calls it a pre-release version and welcomes user feedback.

Did you find Microsoft’s new open source Git Virtual File System (GVFS) interesting? Don’t forget to share your views.

To Top

Pin It on Pinterest

Share This