Skip to content

Commit 990d01d

Browse files
committed
feat: add mr rebase method
1 parent ad1c0dd commit 990d01d

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-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(),

tools/python_test_v4.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,9 @@
686686
event = mr.resourcelabelevents.get(events[0].id)
687687
assert event
688688

689+
# rebasing
690+
mr.rebase()
691+
689692
# basic testing: only make sure that the methods exist
690693
mr.commits()
691694
mr.changes()

0 commit comments

Comments
 (0)