Introduction and Background
We are in the process of changing source control system and we are currently evaluating git and mercurial. The total code base is around 6 million lines of code, so not massive and not really small either.
Let me first start off with a very brief introduction to how the current repository design looks.
We have one base folder for the complete code base, and beneath that level there are all sorts modules used in several different contexts. For example “dllproject1” and “dllproject2” can be looked at as completely separate projects.
The software we are developing is something we call a configurator, which can be customized endlessly for different customer needs. At total we probably have 50 different versions of them. However, they have one thing in common. They all share a couple of mandatory modules (mandatory_module1 ..). These folders basically contain kernel/core code and common language resources etc. All customizations can then be any combination between the other modules (module1 ..).
Since we currently are using cvs we've added aliases in the CVSROOT/modules file. They might look something like:
core –a mandatory_module1 mandatory_module2 mandatory_module3
project_x –a module1 module3 module5 core
So if someone decides to work on project_x, he/she can quickly checkout the modules needed by:
base>cvs co project_x
Questions
Intuitively it just feels wrong to have the base folder as a single repository. As a programmer you should be able to check out the exact code sub set needed for the current project you are working with. What are your thoughts on this?
On the other hand it feels more right to have each of these modules in separate repositories. But this makes it harder for programmers to check out the modules that they need. You should be able to do this by a single command. So my question is: Are there similar ways of defining aliases in git/mercurial?
Any other questions, suggestions, pointers are highly welcome!
PS. I have searched for similar questions but didn’t feel that any of them applied 100% to my situation.