Reputation: 15032
I'm currently working on a large project being developed by several teams with more than 50 developers in total. We're trying to exploit every tiny bit of known methodologies in order to make our delivery process smooth and predictable (Scrum, code freezes, planning meetings, retrospectives, etc.). Instead what we get in the end is a mess. Recently we've experienced huge merge/deployment problems just before demo for our product not only due to amount of pressure from the management and client but also due to the way our work organized on development side.
We use git with GitLab, we use pull requests, we're trying to review the changes before merging them into production branch. But it happens that closer to the dead-line in just half of the day (4 hours) developers tend to commit more than 50 devs * 0.5 day = 25 dev days
of work making our final branch heavily unstable. The problem is that most of the branches are stable in isolation but cause problems when merged. The problem gets worse due to incremental merging, when devs are working on a large pieces of functionality inside a team branches, and these large team branches are eventually merged into production branch. In the end it very hard to roll back specific minor issues granularly because there is huge amount of code gets on top of it.
I'm looking for a ways to making our delivery process more predictable and transparent when working with git. How does other large projects organize their work in previously described regard.
I'm not sure where to start, maybe there is some literature on the subject or you have your own best practice that you can share. Any info on the subject is appreciated.
Thank you in advance!
Upvotes: 3
Views: 6225
Reputation: 322
Ok, so problem is in merging the branch. basically before any developer push branch to origin the developer should rebase the branch from final branch. it is as following
git rebase origin/final_branch_name
this command rebaseing your current branch with final branch and if one problematic area where more than 1 developer made change shown as conflict, so you have to solve that conflict and then push branch to origin and make pull request. this process avoid conflict at git dashbord and allow developer to merge branch easily.
Upvotes: 5