Create request-1 targeting the default branch, request-2 targeting request-1, etc. Once request-1 is merged, I'd change the target of request-2 to the default branch and merge the branch back. This is under the assumption that e.g. you can feature flag the feature away, so that e.g. the scaffolded app doesn't show in production yet. An alternative would be to have a "temporary" feature branch that you target until you feel it's ready to be merged into the default branch.
By (temporarly) targeting the prev branch problem (3) is solved in most UIs.
The communication problem (2) is simply done by: This adds X and is scoped to X, look at request-Y to see how feature Y builds on it.
> Do you add all 4 Request reviews at once, or do you wait until the previous one has been approved before adding the next one?
This is the tricky bit, in your example I wouldn't go so far and create all MRs. I'd create one MR ahead at maximum, because if you need to change something based on the review that influences a later feature, you might end up doing work twice.
So maybe a timeline would look like this:
- (Skipping a dependency MR, because I feel one should introduce dependency when it is used and not beforehand)
- request-2: Scaffold application / feature, create an MR targeting default branch (request-2)
- request-3: Start working on feature A, once feature A is 80% done => Create an MR targeting request-1
- Ask for review on request-2 with sharing a link to request-3
- Continue working on request-3 while you wait on request-2 review
- Incorporate request-2 review feedback, get it merged
- Rebase request-3 on merged request-2 (or merge default branch back), resolve conflicts and put it into review
- Start working on request-4 based on the current request-2 branch.
- Rinse and repeat.
There are obvious intricacies, e.g. if legal needs to review dependencies, review times of your reviewers. I generally try to work with the same set of reviewers over a sensible time frame, rather than getting new ones for every MR relating to the same feature set. So check beforehand whether they are available for the foreseeable future.