


Kauth allows a custom kernel extension (kext) to register for these authorization requests and have a say in answering that question. When an application accesses a file or directory, the kernel needs to decide if the current user has access to that object or not. The option we’ve landed on uses a Kauth kernel extension to a similar effect. MacOS does not support stacking drivers in this way, so we explored different approaches. Windows has a concept of file system filter drivers, which can stack on top of an existing file system driver and modify its behavior. This is the piece that has to be rewritten for each OS, and we now have a decent idea of how we’ll build it for the Mac. Items 1 and 3 are not inherently tied to any operating system, but item 2 is very much tied to the specific operating system, file system, and driver model. If you’re interested, you can read much more about how it works and peruse the code. A user mode process that knows how to interpret the state of a Git repo to respond to file system queries, and how to respond to file system events to modify the state of the Git repo.A file system filter driver that intercepts some file system operations and asks a user mode process about how to respond to things like directory enumerations and file contents.Patches to Git, to make it work efficiently with a virtualized file system.

GVFS for Windows is made of up three main pieces: I’m excited to say that we’ve made good progress on a prototype design for GVFS for Mac, and I’ll share some of those details here. We recently announced that we’re investigating how to build GVFS on other platforms. GVFS is currently only supported on Windows 10. Over the last couple of years, we built GVFS to enable the Windows team to work in a Git repo that is orders of magnitude larger than any repo in existence before it.
