summaryrefslogtreecommitdiff
path: root/gitlab/objects.py
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2016-03-22 17:59:53 +0100
committerGauvain Pocentek <gauvain@pocentek.net>2016-03-22 17:59:53 +0100
commit43e8a2a82deff4c95e156fc951f88ff6e95cf7b8 (patch)
treee121aaa940d8c03a84f266a967173748b7bb1bf4 /gitlab/objects.py
parentbb463ae4e0ed79e472c0d594f76dc8177a29fb5c (diff)
downloadgitlab-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.py37
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