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 yes! And, packaging up things like “visual studio” etc is not even that massive. IIRC at Unity I had that in like 200MB without even trying hard. This is for old version, but idea the same https://gist.github.com/aras-p/e5df1b7a3374b99ae31f053b14403d92
Packaging up Visual Studio & Windows 10 SDK for in-repository usage

Packaging up Visual Studio & Windows 10 SDK for in-repository usage - package_builds_vs2017.cmd

Gist
@forrestthewoods @aras hmm .. that works? I would've expected visual studio to set all kinds of archaic registry stuff that would make it not function if not "properly" installed
interesting
@logicalerror @forrestthewoods that’s what we did at Unity, so worked at least there :)

@aras @logicalerror it requires setting up your build tool to point at the committed toolchains. And C++ has a million different build systems.

At the end of the day some process calls cl.exe and link.exe. There is surprisingly little magic.

I’m increasingly a fan of nuking environment variables to prevent random PATH bullshit from leaking in. :)

@forrestthewoods @aras you mean on the server side? I never noticed visual studio in the unity repo? (certainly didn't look for it though)
do you mean it would've compiled even I hadn't installed visual studio? 🤔
@logicalerror @forrestthewoods yes (since 2018 or so). That’s about the first thing “how to setup build environment” docs used to say. And even then, I had to explain to people over and over again that no, changing your local VS install version will not affect the build one iota.
@logicalerror @forrestthewoods …and yes VS toolchain and Win10 SDK were in the repo itself, under PlatformDependent somewhere
@forrestthewoods @aras huh how about that.. left unity 2 years ago and still learning new things about its build system 😂
@aras @forrestthewoods but pretty cool that's possible .. but I'm guessing due to licensing this can't be done in an open source project
was xcode part of the build system too?
@logicalerror @forrestthewoods yes. Not Xcode the IDE, but the compiler + platform SDK bits for Mac and iOS, yes. Same for Android etc.
@forrestthewoods @aras nice, android I expected since it's open source, didn't expect the commercial compilers though
I guess this partially explains unity never open sourcing its source 😂
@logicalerror @forrestthewoods that’s NOT why. All these were already properly stripped for source code customers, and there the build system does fallback to system-installed toolchains. Open source (if it ever happened) would have used exact same approach.
@aras @forrestthewoods I didn't know about the stripping, but I did say "partially", didn't claim this is THE reason. Obviously it would've been possible to work around this, but it would take effort & time. Didn't know that was already done
@aras @logicalerror @forrestthewoods a similar thing was done for Wolfenstein development. I always thought it was a great idea. Especially made updating the project and toolchains trivial to roll out to the entire team.