I'm trying to come up with a reasonably clean way to represent the following in Git:
A base project that contains common code used across a number of projects.
Multiple projects that extend the base project with additional files in several subdirectories of the base project.
Extension projects often have project-specific modifications to the base project. We want the ability to push these modifications back upstream while not also pushing the extension specific stuff up.
My current thinking is something along the lines of:
Separate repos for base project and each extension project.
For each extension project, fork the base project and create a submodule for the extension-specific stuff. Symlink subdirectories of the submodule to the expected locations in the superproject directory structure.
Is there a better way?