Johannes, Thanks for your feedback. I'm not looking closely at submodules, as it's my understanding that VFSForGit does not support them. A VFS would be a killer feature for us. If VFSForGit were to support submodules, we'd look at them. They would provide access control in a way that's clearly nonabusive. I hear you on the drawbacks. AMD today looks more like the 100 independent repos you describe, except we don't have automation at the delivery arcs. Integrations are manual and thus not particularly frequent. I'm probably biased toward favoring a monorepo, which I've seen applied at a former employer, versus continuous delivery. That's due to lack of personal familiarity with CD -- not any real objections. Thanks, John On 12/06/2018 03:08 PM, Johannes Schindelin wrote: > Hi, > > On Wed, 5 Dec 2018, Jeff King wrote: > >> The model that fits more naturally with how Git is implemented would be >> to use submodules. There you leak the hash of the commit from the >> private submodule, but that's probably obscure enough (and if you're >> really worried, you can add a random nonce to the commit messages in the >> submodule to make their hashes unguessable). > I hear myself frequently saying: "Friends don't let friends use > submodules". It's almost like: "Some people think their problem is solved > by using submodules. Only now they have two problems." > > There are big reasons, after all, why some companies go for monorepos: it > is not for lack of trying to go with submodules, it is the problems that > were incurred by trying to treat entire repositories the same as single > files (or even trees): they are just too different. > > In a previous life, I also tried to go for submodules, was burned, and had > to restart the whole thing. We ended up with something that might work in > this instance, too, although our use case was not need-to-know type of > encapsulation. What we went for was straight up modularization. > > What I mean is that we split the project up into over 100 individual > projects that are now all maintained in individual repositories, and they > are connected completely outside of Git, via a dependency management > system (in this case, Maven, although that is probably too Java-centric > for AMD's needs). > > I just wanted to throw that out here: if you can split up your project > into individual projects, it might make sense not to maintain them as > submodules but instead as individual repositories whose artifacts are > uploaded into a central, versioned artifact store (Maven, NuGet, etc). And > those artifacts would then be retrieved by the projects that need them. > > I figure that that scheme might work for you better than submodules: I > could imagine that you need to make the build artifacts available even to > people who are not permitted to look at the corresponding source code, > anyway. > > Ciao, > Johannes