I'm facing the following problem and don't have an answer to it:
We have a repo that was cloned from an SVN repo. The project stored in that repo is something like a platform software that gets used by various projects. The structure of the repo is like this:
platform
|- core
|- additional
The structure of that repo cannot be changed for some reasons. Both, core
and additional
contain data that are part of that platform
.
If a project wants to use the platform and add some functionality, it creates a new folder under additional
containing the sources and adds a header for that functionality to additional/includes
Currently, we simply branch off new projects from master
and everything goes into the same repo. This leads to a branch inflation and my (central) repo grows more and more because all of the commits being made in the single projects go to the central repo (my colleagues are used to SVN, so they push
nearly after each commit
-- just to be sure...).
First I had in mind were submodules: keep platform
as a submodule under a superproject (called super
) and then go to super/platform/additional/mystuff
, create the sources there and add them to super
. But this obviously doesn't work because the files are inside the platform
submodule.
Is there any better way to organize my repo, so that:
- users of the platform are able to update their working copy from the central repo
- AND users of the platform are able to apply bug fixes to the repo of
platform
- AND the projects using
platform
don't mess up the repo ofplatform
?
EDIT 1: Highly coupled git submodules covers quite a bit of the scenario I'm in: tightly coupled stuff, me the only one knowing a bit more than absolute basics of git, "Most of the developers have only a very cursory knowledge of git". Perfect match!
EDIT 2: While the answer from Michael looks promising, I think that it's a bit too complex to use. I'm looking for some really simple thing that doesn't need that much interaction.