Merge automatically after wait time if no unresolved discussions and not WIP
Proposal
- Set a wait time. After the wait time is expired, the merge request is merged automatically provided there are no blockers.
- Blockers include at least unresolved discussions and WIP for first iteration.
- In a future iteration it also includes negative approval signals.
- If the wait time is passed and all blockers are removed, then the mr is merged immediately automatically.
Why
- I (VictorW) believe that development teams are increasingly moving toward a model of collaboration, trust, and shared ownership versus one of strict blocking approvals. Teams should be encouraged to move quickly. We should trust the author to submit an mr and ping people for review. This encourages velocity and iteration. It puts the responsibility on the reviewers to participate and catch errors. And so the the author is never blocked. Furthermore, if a bad mr is merged because no one reviewed it, it is not the fault of the author, but it is the fault of the team as a whole because they missed reviewing the mr. It is thus a forcing function to ensure that teams manage their vacation times well, communicate availability actively, load balance amount of work on the team (eg with WIP limits on issues), etc.
- If the author wants to create an mr for review but is not sure that it is ready yet, they can simply leave it as WIP and/or create an unresolved discussion. Again, we trust the author to do the right thing.
- Teams at GitLab use merge requests for handbook updates. Often I see really big updates that take many days or even weeks to be merged. This goes against our values of iteration and efficiency. If we use such a feature, it would encourage all of GitLab to iterate more quickly and force us to make smaller mrs and embody more trust in individuals. I think setting a wait time of 36 hours would be pretty good.
Edited by Victor Wu