Gerrit-style code review for GitLab projects.
The branch-based approach that GitLab merge request uses can slow things down when you really want to create dependent MRs so they can be reviewed in parallel. With great amount of manual effort and carefulness, you can actually achieve that by setting an MR's target branch to the one it's dependent on and making sure before merging any MRs, you change their target branch back to master (or any default main branch in your project).