Skip to content

Commit 1fa1e44

Browse files
committed
feat: add mr rebase method
Change-Id: Ibd55d59db32f34c97042a59a7c1978b6dac41439
1 parent ad1c0dd commit 1fa1e44

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

docs/gl_objects/mrs.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,7 @@ Reset spent time for a merge request::
181181
Get user agent detail for the issue (admin only)::
182182

183183
detail = issue.user_agent_detail()
184+
185+
Attempt to rebase an MR::
186+
187+
mr.rebase()

gitlab/exceptions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,10 @@ class GitlabMRApprovalError(GitlabOperationError):
173173
pass
174174

175175

176+
class GitlabMRRebaseError(GitlabOperationError):
177+
pass
178+
179+
176180
class GitlabMRClosedError(GitlabOperationError):
177181
pass
178182

gitlab/v4/objects.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2712,6 +2712,22 @@ def unapprove(self, **kwargs):
27122712
server_data = self.manager.gitlab.http_post(path, post_data=data, **kwargs)
27132713
self._update_attrs(server_data)
27142714

2715+
@cli.register_custom_action("ProjectMergeRequest")
2716+
@exc.on_http_error(exc.GitlabMRRebaseError)
2717+
def rebase(self, **kwargs):
2718+
"""Attempt to rebase the source branch onto the target branch
2719+
2720+
Args:
2721+
**kwargs: Extra options to send to the server (e.g. sudo)
2722+
2723+
Raises:
2724+
GitlabAuthenticationError: If authentication is not correct
2725+
GitlabMRRebaseError: If rebasing failed
2726+
"""
2727+
path = "%s/%s/rebase" % (self.manager.path, self.get_id())
2728+
data = {}
2729+
return self.manager.gitlab.http_put(path, post_data=data, **kwargs)
2730+
27152731
@cli.register_custom_action(
27162732
"ProjectMergeRequest",
27172733
tuple(),

0 commit comments

Comments
 (0)