The Git revision system used by developers around the world was developed by Linus Torvalds in 2005; Torvalds developed it solely to manage the development of Linux kernel.
Since then, it has spread; Microsoft today uses it for the internal Windows repository. The problem, however, per Microsoft, arises when a repository becomes too big. The Winnows repository, for example, contains 3.5 million files and is over 270 GB in size.
It takes twelve hours to run the ‘git clone’ command, three hours to run the ‘git checkout’ command, thirty minutes to make a commit with ‘git commit’ and eight minutes for ‘git status’ to process; quite a lot of productive time is wasted for these commands.
Therefore, Microsoft fixed it the only way they could.
It’s a file system
The Git Virtual File System lets Git scale for repos of any size; it virtualizes the file system holding the repository, making it appear as if all the files in a repo are present locally. Of course, in reality, files are downloaded only when opened the first time.
GVFS will also manage how much of the repo Git should consider while running the ‘checkout’ and ‘status’ commands; since any file that hasn’t been download locally can be safely ignored.
Since Microsoft’s wizardry is at the file system level, all the IDEs and tools that support Git, also support GVFS.
The Windows repository with GFVS gets to see significant improvements, as you can see in the image above. There’s also the added benefit of ignoring files; in a repository, as large and complicated as Windows, a typical developer would only download a few thousand files for the specific area they are modifying.
GVFS ignores the areas that haven’t modified, speeding up the Git process.
There is, however, a trade-off: a developer’s first build takes longer because GVFS has to download all the files that it is building, but subsequent builds “are no slower than normal.”
Microsoft has open-sourced the GVFS client code under an MIT license. The repository can be found here, on GitHub.
Microsoft does warn that GVFS still relies on a pre-release file system driver; it would be best to try it out in a virtual environment rather than on a live system.
You can read more about GVFS – in detail – over here.