diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2016-03-22 17:59:53 +0100 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2016-03-22 17:59:53 +0100 |
commit | 43e8a2a82deff4c95e156fc951f88ff6e95cf7b8 (patch) | |
tree | e121aaa940d8c03a84f266a967173748b7bb1bf4 /gitlab/objects.py | |
parent | bb463ae4e0ed79e472c0d594f76dc8177a29fb5c (diff) | |
download | gitlab-43e8a2a82deff4c95e156fc951f88ff6e95cf7b8.tar.gz |
Add support for MergeRequest validation
Both API and CLI support this feature.
fixes #105
Diffstat (limited to 'gitlab/objects.py')
-rw-r--r-- | gitlab/objects.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gitlab/objects.py b/gitlab/objects.py index c5a47a0..3b8a467 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -1085,6 +1085,43 @@ class ProjectMergeRequest(GitlabObject): self.gitlab, id, project_id=self.project_id, merge_request_id=self.id, **kwargs) + def merge(self, merge_commit_message=None, + should_remove_source_branch=False, + merged_when_build_succeeds=False, + **kwargs): + """Accept the merge request. + + Args: + merge_commit_message (bool): Commit message + should_remove_source_branch (bool): If True, removes the source + branch + merged_when_build_succeeds (bool): Wait for the build to succeed, + then merge + + Returns: + ProjectMergeRequet: The updated MR + Raises: + GitlabConnectionError: If the server cannot be reached. + GitlabMRForbiddenError: If the user doesn't have permission to + close thr MR + GitlabMRClosedError: If the MR is already closed + """ + url = '/projects/%s/merge_requests/%s/merge' % (self.project_id, + self.id) + data = {} + if merge_commit_message: + data['merge_commit_message'] = merge_commit_message + if should_remove_source_branch: + data['should_remove_source_branch'] = 'should_remove_source_branch' + if merged_when_build_succeeds: + data['merged_when_build_succeeds'] = 'merged_when_build_succeeds' + + r = self.gitlab._raw_put(url, data=data, **kwargs) + errors = {401: GitlabMRForbiddenError, + 405: GitlabMRClosedError} + raise_error_from_response(r, errors) + return ProjectMergeRequest(self, r.json()) + class ProjectMergeRequestManager(BaseManager): obj_cls = ProjectMergeRequest |