The main project I am currently working on, is composed of hundred of C# projects, all of them grouped into 3 git repositories: user-facing apps, background-apps and commons. The main webapp project in placen on the user-facing repo but depends on other projects that are placed in the other repositories. Because of this, to build the main webapp you have to clone then 3 repositories.
This situation has some drawbacks:
- It is uncomfortable for developers working on the webapp
- The high coupling between repositories/projects brings a big complexity when you have several teams working in parallel
- The maintenance/evolution of the system gets too complex
To deal with this situation we decided to “cut” the system in several dimensions: functional, technical and SCM. So in the upcoming post I will share the different strategies we are using.