Let's say I have four projects named Core, A, B, Super. The dependency tree is like this:
Super ---> Core
|-> A -> Core
|-> B -> Core
I want each project to be stand-alone, that is, I want to be able to check-out and compile each project on its own (each with its dependencies of course).
I thought about mapping each project to a repository and then referring dependencies with submodules, but I see the following issues with that approach:
So... Am I missing something? Did I misunderstand git submodules or misusing them? Is there any other solution to this problem (other than resorting to binary dependencies)?
You just discovered the lack of overridden dependencies with Git submodules:
If Super depends on Core, its dependency of Core should "override" the ones A and B have with Core.
The only way to emulate that would be to create your Super project the way you did,
and to remove the sub-module Core of A and B.
(meaning Super depends now on A' and B', A' being A without Core, B' being B without Core)