I am currently trying to figure out, how to do release management with git flow in a scenario where I have one git repository with about 15 projects in two solutions plus scripts for the database.
Each solution basically contains one project that will result in an executable and more than 10 projects containing base functionality used by both solutions like DAL, SAP access wrapper etc.
Solution one is an application with UI for the users.
Solution two is a Windows service.
The release of the two solutions and the database are not in sync. This means that frequently only one ore two of the three are being released. This results in different version numbers. For example, the UI is released quite frequently, the service is released seldomly. The database somewhere in between. So, the UI could have version 2.1.15, the service 2.1.1 and the database 2.1.5.
Now, what to do with the shared projects? Should they use the version number of the UI or that of the service?
How would I account for the fact that a change in one of the shared projects wouldn't automatically trigger a release of both solutions? This means that at the same time, the production environment contains two different versions of the same projects. This somehow needs to be reflected in the repository.
I am a little bit lost here, any advice, experience etc. would be appreciated.
I am free to structure the repository and code base in any way and I can create additional repositories if that helps.