The key is to let the repo be a single comprehensive source of data for building arbitrary artifacts.
The key is to let the repo be a single comprehensive source of data for building arbitrary artifacts.
By that do you mean it's one way of doing it, or that it's the only way?
Seems clear to me that it's not the only way. For instance .Net code tends to be Git for the project source + NuGet for external dependencies. It works pretty well.
How is "single repo" a "design" and how does this design dictate dependency management?
Yes, if you have a single repo then that would be a single source of data for building your stuff. That seems redundant.
Then you can manage dependency as part of the normal source control process.
You can consider that a bad thing or a good thing.
Most language's package composition (C/C++, Java, Python, Ruby) don't permit running multiple versions at runtime. The single-version policy is one way of addressing dependency hell.