Skip to content

Commit b9877b4

Browse files
authored
Merge pull request #823 from jeroen92/rebase-mr
Resolve #822, add mr rebase
2 parents c8a7e31 + bc4280c commit b9877b4

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+
assert mr.rebase()
691+
689692
# basic testing: only make sure that the methods exist
690693
mr.commits()
691694
mr.changes()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy