I have asked this question on Stack Overflow and I got a suggestion of posting it here for better suitability. So here is my question :
I am new to DevOps, and i have a solution with Umbraco as CMS, Mobile App as front-end for the content added in CMS and .Net MVC web API to connect CMS with the Mobile App. I also have WebJobs and Microsoft flow for some scheduling tasks.
I need to implement DevOps for my Multi Tenant Application, here is my scenario:
The solution will have one master application which will just serve as master list of features for admin to enable features while creating new community. Multiple communities having separate databases, each community has multiple features (Feature1, Feature2). There should be a way for developers to forward integrate and backward integrate the features.
After adding the feature to any community, It can have its own customizations in particular feature. In some scenarios developers also need to add these changes to the master or the sibling communities. I also have added the Image for better understanding.
I need help in creating the Branching Strategy for my solution that fulfils all above requirements and minimize the chances of conflicts while merging the branches all across. I have below options in my mind.
- Should I consider each Feature as separate branch? If yes, how about managing the community specific changes done in any single community?
- Should I consider each community as separate branch? If yes, how do I separate out the feature code to be merged with the community branch?
- Should I consider shared code among all the communities? If yes, what about the community specific changes?
Everything is going to be on the fly once deployed (in code base using Visual Studio 2017). Which strategy I should go for? Or there is any better approach than these? How can i manage to resolve the merge conflicts if generated after the deployment? Also, in DevOps Should i go for Git or TFS?