Here is my best attempt to articulate why I believe all dependencies, including compiler toolchains, belong in version control.

https://www.forrestthewoods.com/blog/dependencies-belong-in-version-control/

Dependencies Belong in Version Control

Why dependencies should be checked into version control.

@forrestthewoods FWIW the "sparse" stuff in git is I think workable these days. Here's an example: https://gist.github.com/jsimmons/65acdcab3a91217717a93f66fa848c06
putting all the llvm versions into a git repo and using sparse magic to avoid copying it all down

putting all the llvm versions into a git repo and using sparse magic to avoid copying it all down - git.txt

Gist

@dotstdy yeah with the right sparse, shallow, and maybe LFS(?) you can make it work. I’m so sad Microsoft abandoned GitVFS in favor of sparse. Not sure why.

Sparse is still inferior to VFS imho. VFS “just works” (modulo bugs). Sparse requires maintenance and can be fragile. But it can be done! FWIW at work we use to have sparse lists and VFS is soooo much better.

@forrestthewoods They abandoned it because they wanted to support mac apparently.

@dotstdy makes sense. But seems like a bad reason!

The world clearly needs a decent cross-platform VFS library. Unfortunately it needs to wrap FUSE for Linux, ProjFS for Windows, and macFUSE for Mac.

And possibly something else in the future when Apple inevitably breaks things with more lockdown.

@forrestthewoods Mac have already removed those APIs, that's why they gave up. The blog post is like "we had the basics up on mac and then they removed the APIs we need" :') best platform ever

@dotstdy I couldn’t tell if they were actually gone or not.

FWIW we have a VFS at work that works across the board. Public GitHub leads me to believe macOS uses NFSv3. Three parallel implementations for three platforms, woo!

@forrestthewoods I think it's deprecated and there's no workable replacement. So I guess they read that as a nightmare they didn't want to deal with whenever a random macos update completely breaks everything.
@dotstdy we have something that definitely works. I assume it’s using NFSv3 but don’t know. Also not sure why it macOS can use that why not use it on Linux and Windows as well? Way outside my expertise…