I'm using GIT to manage a Content Management System (CMS) project. The CMS can have multiple plugin (module).
So basically, I want to have 3 types of repositories:
- The core CMS development ( every new project is a checkout of that last stable & unconfigured version )
- 1 repository per module/plugin. ( every new project will checkout the last stable version of the module they want to implement )
- 1 repository per project ( each client will be a repository that represent the personalization from the core CMS and the modules )
For the type 1 & 2, I guess it's simple basic repository. But when it come to client project, I get confused:
- First I'll clone the CMS, then go in the /modules/ folder and clone again all required modules ? That will make a repository inside a repository ! Will the first repo will try to log the .git/ folder of each module ?
- I can't use submodule as each client needs their modules to be personalized.
- If I modify a core component of a module ( not a personalization, just a bug fix ), can I push that single file to the original module repository ?
- (Not talking of the module unitTest that will be spread all around )
So the question is: How should I organize the repository(s) / files / folders in order to be efficient ?