Some background:
Currently on CVS and transition to Git. We plan to release our sophisticated custom internal platform every month or so.
In the current development stream, we have several branches, one for each of the planned releases, for example, an example:
- 7000 release likely to be released in May
- Release 7100, which is likely to be released in August.
- Release 7200, which is likely to be released in September.
(we can have half a dozen planned releases working at the same time).
We also named the project branches for larger projects that do not currently have a release date. In the end, they become merged into the selected planned release branch when the date becomes known.
Each release is quite large (many functions), since the releases require failures, we cannot do them too often, we can literally get permission to stop the release once a month or so.
This causes merge conflicts. We have a CVS report that contains a list of manual mergers that need to be completed, and we have divided the work among several developers. Any way to do the same with Git is to split the merge work for merging from one branch to another (leading to a lot of conflicts) between several developers?
EDIT:
This is what I ended up doing (note that we are using Atlassian Stash / BitBucket Server to view the request / code):
- Merge daemon: create a new manual merge branch from the target branch
- Combine daemon: start merging to get a list of conflicts
- Combine daemon: notify managers and wait for conflicts to resolve.
- Manager: share conflicts between developers
- Developers: each developer creates and verifies the "feature" branch from the merge branch, and then begins to merge the original tag with their objects branch - they get conflicts in their environment. They only resolve conflicts for the files they are responsible for, and then perform a soft reset to abort the merge and commit only the files that they resolved. Then they merge their function branch (with overview) into the "manual merge" branch.
- Merge daemon: once conflicts have been resolved by the developers, check the modified files from the "manual merge" branch (only files that have changed). At this point, all manual conflicts must be resolved. Lock and press.
git git-merge
Pavel Chernikov
source share