How can Project X be released (merged to Master) without Project Y's changes?
Moving forward, should Solution A, B and C all be separate repositories moving forward (despite them relating at a business level)?
Scenario
We have a single repository which contains:
- Solution A
- Solution B
- Solution C (Shared components)
Solution A and B both 'plug-in' to our overall System which connects them all together via common components. Solution A and B rely on shared components within Solution C.
Project X requires changes to Solutions A and C. These changes are done in feature branches, merged back into dev and continuously deployed into our Staging environment.
Project Y requires changes to Solutions B only. Again in feature branches, merged back into dev and continuously deployed to Staging.
Git History
At this point, our Git history looks like this (earliest to latest):
--> ProjectX --> ProjectY
The business requirement
The business no longer want Project X to go in to production, as Project Y is now 'priority 1'. No changes from Project X can be released.
Branching strategy
Release strategy
We deploy full product packages, not differential.
On merging into Dev, Team Foundation Server deploys to Staging.
On merging into Master, Team Foundation Server supplies a formatted deployment package per build definition.