Skip to content

Commit 5614a7c

Browse files
author
Gauvain Pocentek
committed
docs: add MR API
1 parent 799b593 commit 5614a7c

File tree

3 files changed

+147
-0
lines changed

3 files changed

+147
-0
lines changed

docs/api-objects.rst

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ API objects manipulation
1414
gl_objects/issues
1515
gl_objects/labels
1616
gl_objects/licenses
17+
gl_objects/mrs
1718
gl_objects/namespaces
1819
gl_objects/projects
1920
gl_objects/runners

docs/gl_objects/mrs.py

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# list
2+
mrs = gl.project_mergerequests.list(project_id=1)
3+
# or
4+
mrs = project.mergerequests.list()
5+
# end list
6+
7+
# filtered list
8+
mrs = project.mergerequests.list(state='merged', order_by='updated_at')
9+
# end filtered list
10+
11+
# get
12+
mr = gl.project_mergerequests.get(mr_id, project_id=1)
13+
# or
14+
mr = project.mergerequests.get(mr_id)
15+
# end get
16+
17+
# create
18+
mr = gl.project_mergerequests.create({'source_branch': 'cool_feature',
19+
'target_branch': 'master',
20+
'title': 'merge cool feature'},
21+
project_id=1)
22+
# or
23+
mr = project.mergerequests.create({'source_branch': 'cool_feature',
24+
'target_branch': 'master',
25+
'title': 'merge cool feature'})
26+
# end create
27+
28+
# update
29+
mr.description = 'New description'
30+
mr.save()
31+
# end update
32+
33+
# state
34+
mr.state_event = 'close' # or 'reopen'
35+
mr.save()
36+
# end state
37+
38+
# delete
39+
gl.project_mergerequests.delete(mr_id, project_id=1)
40+
# or
41+
project.mergerequests.delete(mr_id)
42+
# or
43+
mr.delete()
44+
# end delete
45+
46+
# merge
47+
mr.merge()
48+
# end merge
49+
50+
# cancel
51+
mr.cancel_merge_when_build_succeeds()
52+
# end cancel
53+
54+
# issues
55+
mr.closes_issues()
56+
# end issues
57+
58+
# subscribe
59+
mr.subscribe()
60+
mr.unsubscribe()
61+
# end subscribe

docs/gl_objects/mrs.rst

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
##############
2+
Merge requests
3+
##############
4+
5+
Use :class:`~gitlab.objects.ProjectMergeRequest` objects to manipulate MRs for
6+
projects. The :attr:`gitlab.Gitlab.project_mergerequests` and
7+
:attr:`Project.mergerequests <gitlab.objects.Project.mergerequests>` manager
8+
objects provide helper functions.
9+
10+
Examples
11+
--------
12+
13+
List MRs for a project:
14+
15+
.. literalinclude:: mrs.py
16+
:start-after: # list
17+
:end-before: # end list
18+
19+
You can filter and sort the returned list with the following parameters:
20+
21+
* ``iid``: iid (unique ID for the project) of the MR
22+
* ``state``: state of the MR. It can be one of ``all``, ``merged``, '``opened``
23+
or ``closed``
24+
* ``order_by``: sort by ``created_at`` or ``updated_at``
25+
* ``sort``: sort order (``asc`` or ``desc``)
26+
27+
For example:
28+
29+
.. literalinclude:: mrs.py
30+
:start-after: # list
31+
:end-before: # end list
32+
33+
Get a single MR:
34+
35+
.. literalinclude:: mrs.py
36+
:start-after: # get
37+
:end-before: # end get
38+
39+
Create a MR:
40+
41+
.. literalinclude:: mrs.py
42+
:start-after: # create
43+
:end-before: # end create
44+
45+
Update a MR:
46+
47+
.. literalinclude:: mrs.py
48+
:start-after: # update
49+
:end-before: # end update
50+
51+
Change the state of a MR (close or reopen):
52+
53+
.. literalinclude:: mrs.py
54+
:start-after: # state
55+
:end-before: # end state
56+
57+
Delete a MR:
58+
59+
.. literalinclude:: mrs.py
60+
:start-after: # delete
61+
:end-before: # end delete
62+
63+
Accept a MR:
64+
65+
.. literalinclude:: mrs.py
66+
:start-after: # merge
67+
:end-before: # end merge
68+
69+
Cancel a MR when the build succeeds:
70+
71+
.. literalinclude:: mrs.py
72+
:start-after: # cancel
73+
:end-before: # end cancel
74+
75+
List issues that will close on merge:
76+
77+
.. literalinclude:: mrs.py
78+
:start-after: # issues
79+
:end-before: # end issues
80+
81+
Subscribe/unsubscribe a MR:
82+
83+
.. literalinclude:: mrs.py
84+
:start-after: # subscribe
85+
:end-before: # end subscribe

0 commit comments

Comments
 (0)