I have a 100k commit svn repo I have been trying to migrate but the result is just too large. Partly this is due to tons of revisions of binary files that must be in the repo.
Does the virtualization also help provide a shallow set of recent commits locally but keep all history at the server (which is hundreds of gigs that is rarely used)?
A GVFS clone will contain all of the commits and all of the trees but none of the blobs. This lets you operate on history as normal, so long as you don't need the file content. As soon as you touch file content, GVFS will download those blobs on demand.
Is there anything people particularly miss about Source Depot? Something SD was good at, but git is not?
Anyway MS share source with various third parties (governments at least and I believe large customs in general) so any of these are a potential leak source.
1) Why include it in default windows? It seems that 99.99% of users would never even know it existed, let alone use it
2) Does that mean GVFS isn't useable on *nix systems? Any plans to make it useable, if so?
E- oops, missed that line. Cool, wonder if it will show up in more than Git
2) GVFS is currently only available on Windows, but we are very interested in porting to other platforms.
The first internal version of GVFS was actually based on a 3rd party driver that looks a lot like FUSE. But because it is general purpose, and requires all IO to context switch from the kernel to user mode, we just couldn't make it fast enough.
Remember that our file system isn't going to be used just for git operations, but also to run builds. Once a file has been downloaded, we need to make sure that it can be read as fast as any local file would be, or dev productivity would tank.
With GvFlt, we're able to virtualize directory enumeration and first-time file reads, but after that get completely out of the way because the file becomes a normal NTFS file from that point on.
From your description it sounds like there could be usefulness in coordinating such efforts.
We're building a VFS (Virtual File System) for Git (G) so GVFS was a very natural name and it just kind of stuck once we came up with it.
1. How do you measure "largeness" of a git repo?
2. How are you confident that you have the largest?
3. How much technical debt does that translate to?
2. Fairly confident, at least as far as usable repos go. Given how unusable the Windows repo is without GVFS and the other things we've built, it seems pretty unlikely anyone's out there using a bigger one. If you know of something bigger, we'd love to hear about it and learn how they solved the same problems!
3. Windows is a 30 year old codebase. There's a lot of stuff in there supporting a lot of scenarios.
Microsoft does have an internal Source Code Archive, which does the moral equivalent of storing source code and binary artifacts for released software in a underground bunker. I used to have a bit of fun searching the NT 3.5 sources as taken from the Source Code Archive...
It's certainly possible that somebody created a 1 TB source tree in Git, but what we've never heard of is somebody actually _using_ such a source tree, with 4000 or more developers, for their daily work in producing a product.
I say this with some certainty because if somebody had succeeded, they would have needed to make similar changes to Git to be successful, though of course they could have kept such changes secret.
I'm curious, did you experiment with LFS for prior to building GitVFS?
Also, I know that there is an (somewhat) active effort to port GitVFS to Linux, do you know if any of the Git vendors (GitLab and/or GitHub) are planning to support GitVFS in their enterprise products?
That is an excellent point. Thanks!
- Availability of tools
- Familiarity of developers (both current and potential)
Thanks!
This is a little off-topic, but why can't Windows 10 users conclusively disable all telemetry?
(I consider the question only a little off-topic, because I have the impression that this story is part of an ongoing Microsoft charm-offensive.)