Git push options to create a merge request, set target_branch and set merge when pipeline succeeds
What does this MR do?
Adds the ability to perform the following with git push options:
- create a merge request
- set the target branch of a merge request
- set merge request to merge when its pipeline succeeds
Merge request creation
To create a new merge request:
git push -u origin -o merge_request.create
To create a new merge request, set its target branch, and set it to merge when its pipeline succeeds:
git push -u origin -o merge_request.create \
-o merge_request.target=branch1 \
-o merge_request.merge_when_pipeline_succeeds
Updating existing merge requests
When pushing branches with an existing open merge request, target
and merge_when_pipeline_succeeds
can be used to update the merge request.
Internals
A new Gitlab::PushOptions
class handles parsing and validating the push
options array. This can be the start of the standard of GitLab accepting
push options that follow namespacing rules. Rules are discussed in
https://gitlab.com/gitlab-org/gitlab-ce/issues/43263#note_147777088
E.g. these push options:
-o merge_request.create -o merge_request.target=123
Become parsed by the Gitlab::PushOptions
class as:
{
merge_request: {
create: true,
target: '123',
}
}
And are fetched with the class via:
push_options.get(:merge_request)
push_options.get(:merge_request, :create)
push_options.get(:merge_request, :target)
A new MergeRequests::PushOptionsHandlerService
takes the merge_request
namespaced push options and handles creating and updating
merge requests.
Any errors encountered are passed to the existing output
Hash in
Api::Internal
's post_receive
endpoint, and passed to gitlab-shell
where they're output to the user.
What are the relevant issue numbers?
- https://gitlab.com/gitlab-org/gitlab-ce/issues/43263
- https://gitlab.com/gitlab-org/gitlab-ce/issues/53198
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
Documentation created/updated via this MR -
Documentation reviewed by technical writer or follow-up review issue created -
Tests added for this feature/bug -
Conforms to the code review guidelines -
Conforms to the merge request performance guidelines -
Conforms to the style guides -
Conforms to the database guides
Closes #43263 (closed)