I don't know if I am over-complicating stuffs but here is our setup.
- 3 Code hosting servers (QA, Stage, and Production)
- 3 main git Branches (
master) for respective servers
- 10-15 developers working on git sometimes working on same file concurrently.
- Developers are only allowed to merge and push to
dev, Maintainers handle the code releases to stage and production.
- any issues are done in their own branch checked-out from
masterbranch (sometimes from connected branch).
- each branches are merged individually to the main branches.
- issues or task has varied release dates so master is not always up to date. Sometimes one issue from dev can take months to go to master/production.
Currently we are facing quite a bit of code conflict issues on
dev, which is also wasting lot of our time. Also the code history or graph as of now is starting to look like spider web.
Previously what we had was a linear setup where every one would commit to dev, then maintainers would cherry-pick the commits to stage or prod. That setup was easier for developers but nightmare for maintainers.
If any one has experience with this kind of setup, please advise on how did you made your work easier? I know communication is the key here, but without a dedicated person I find it really challenging right now.