module Gitlab::Client::MergeRequests

def accept_merge_request(project, id, options = {})

Returns:
  • (Gitlab::ObjectifiedHash) - Information about updated merge request.

Options Hash: (**options)
  • :sha(optional) (String) -- if present, then this SHA must match the HEAD of the source branch, otherwise the merge will fail
  • :merge_when_pipeline_succeeds(optional) (Boolean) -- if true the MR is merged when the pipeline succeeds
  • :should_remove_source_branch(optional) (Boolean) -- if true removes the source branch
  • :squash(optional) (Boolean) -- if true the commits will be squashed into a single commit on merge
  • :squash_commit_message(optional) (String) -- Custom squash commit message
  • :merge_commit_message(optional) (String) -- Custom merge commit message

Parameters:
  • options (Hash) -- A customizable set of options.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def accept_merge_request(project, id, options = {})
  put("/projects/#{url_encode project}/merge_requests/#{id}/merge", body: options)
end

def create_merge_request(project, title, options = {})

Returns:
  • (Gitlab::ObjectifiedHash) - Information about created merge request.

Options Hash: (**options)
  • :squash (Boolean) -- Squash commits into a single commit when merging
  • :allow_collaboration (Boolean) -- Allow commits from members who can merge to the target branch
  • :remove_source_branch (Boolean) -- Flag indicating if a merge request should remove the source branch when merging
  • :milestone_id (Integer) -- The global ID of a milestone
  • :labels (String) -- Labels as a comma-separated list.
  • :target_project_id (Integer) -- The target project ID.
  • :description (String) -- Description of MR. Limited to 1,048,576 characters.
  • :assignee_ids (Array) -- The ID of the user(s) to assign the MR to. Set to 0 or provide an empty value to unassign all assignees.
  • :assignee_id (Integer) -- The ID of a user to assign merge request.
  • :target_branch (String) -- The target branch name.
  • :source_branch (String) -- The source branch name.

Parameters:
  • options (Hash) -- A customizable set of options.
  • title (String) -- The title of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def create_merge_request(project, title, options = {})
  body = { title: title }.merge(options)
  post("/projects/#{url_encode project}/merge_requests", body: body)
end

def create_merge_request_discussion(project, merge_request_id, options = {})

Returns:
  • (Gitlab::ObjectifiedHash) - The created merge request discussion.

Parameters:
  • options (Hash) -- A customizable set of options.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def create_merge_request_discussion(project, merge_request_id, options = {})
  post("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions", body: options)
end

def create_merge_request_discussion_note(project, merge_request_id, discussion_id, options)

Returns:
  • (Gitlab::ObjectifiedHash) - The merge request discussion note.

Options Hash: (**options)
  • :created_at (String) -- Date time string, ISO 8601 formatted, e.g. 2016-03-11T03:45:40Z.
  • :body (String) -- The content of a discussion.
  • :note_id (Integer) -- The ID of a discussion note.

Parameters:
  • options (Hash) -- A customizable set of options.
  • discussion_id (Integer) -- The ID of a discussion.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def create_merge_request_discussion_note(project, merge_request_id, discussion_id, options)
  post("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}/notes", body: options)
end

def create_merge_request_pipeline(project, iid)

Returns:
  • (Gitlab::ObjectifiedHash) -

Parameters:
  • iid (Integer) -- The internal ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def create_merge_request_pipeline(project, iid)
  post("/projects/#{url_encode project}/merge_requests/#{iid}/pipelines")
end

def delete_merge_request(project, merge_request_id)

Returns:
  • (Gitlab::ObjectifiedHash) - An empty response.

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def delete_merge_request(project, merge_request_id)
  delete("/projects/#{url_encode project}/merge_requests/#{merge_request_id}")
end

def delete_merge_request_discussion_note(project, merge_request_id, discussion_id, note_id)

Returns:
  • (Gitlab::ObjectifiedHash) - An empty response.

Parameters:
  • note_id (Integer) -- The ID of a discussion note.
  • discussion_id (Integer) -- The ID of a discussion.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def delete_merge_request_discussion_note(project, merge_request_id, discussion_id, note_id)
  delete("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}/notes/#{note_id}")
end

def merge_request(project, id, options = {})

Returns:
  • (Gitlab::ObjectifiedHash) -

Options Hash: (**options)
  • :include_rebase_in_progress (Boolean) -- If true response includes whether a rebase operation is in progress.
  • :include_diverged_commits_count (Boolean) -- If true response includes the commits behind the target branch.
  • :render_html (Boolean) -- If true response includes rendered HTML for title and description.

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def merge_request(project, id, options = {})
  get("/projects/#{url_encode project}/merge_requests/#{id}", query: options)
end

def merge_request_changes(project, id)

Returns:
  • (Gitlab::ObjectifiedHash) - The merge request's changes.

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def merge_request_changes(project, id)
  get("/projects/#{url_encode project}/merge_requests/#{id}/changes")
end

def merge_request_closes_issues(project_id, merge_request_iid)

Parameters:
  • iid (Integer) -- The internal ID of a merge request
  • project (Integer) -- The ID of a project
def merge_request_closes_issues(project_id, merge_request_iid)
  get("/projects/#{url_encode project_id}/merge_requests/#{merge_request_iid}/closes_issues")
end

def merge_request_commits(project, id)

Returns:
  • (Array) - The merge request's commits.

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def merge_request_commits(project, id)
  get("/projects/#{url_encode project}/merge_requests/#{id}/commits")
end

def merge_request_diff_version(project, merge_request_id, version_id)

Returns:
  • (Gitlab::ObjectifiedHash) - Record of the specific diff

Parameters:
  • id (Integer) -- The ID of a merge request diff version.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def merge_request_diff_version(project, merge_request_id, version_id)
  get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/versions/#{version_id}")
end

def merge_request_diff_versions(project, merge_request_id)

Returns:
  • (Gitlab::ObjectifiedHash) - A list of the merge request versions.

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def merge_request_diff_versions(project, merge_request_id)
  get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/versions")
end

def merge_request_discussion(project, merge_request_id, discussion_id)

Returns:
  • (Gitlab::ObjectifiedHash) - The merge request discussion.

Parameters:
  • discussion_id (Integer) -- The ID of a discussion.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def merge_request_discussion(project, merge_request_id, discussion_id)
  get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}")
end

def merge_request_discussions(project, merge_request_id)

Returns:
  • (Gitlab::ObjectifiedHash) - List of the merge request discussions.

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def merge_request_discussions(project, merge_request_id)
  get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions")
end

def merge_request_participants(project, id)

Returns:
  • (Array) -

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def merge_request_participants(project, id)
  get("/projects/#{url_encode project}/merge_requests/#{id}/participants")
end

def merge_request_pipelines(project, id)

Returns:
  • (Array) -

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def merge_request_pipelines(project, id)
  get("/projects/#{url_encode project}/merge_requests/#{id}/pipelines")
end

def merge_requests(project, options = {})

Returns:
  • (Array) -

Options Hash: (**options)
  • :per_page (Integer) -- The number of results per page.
  • :page (Integer) -- The page number.

Parameters:
  • options (Hash) -- A customizable set of options.
  • project (Integer, String) -- The ID or name of a project.
def merge_requests(project, options = {})
  get("/projects/#{url_encode project}/merge_requests", query: options)
end

def rebase_merge_request(project, id, options = {})

Returns:
  • (Gitlab::ObjectifiedHash) - Rebase progress status

Options Hash: (**options)
  • :skip_ci (String) -- Set to true to skip creating a CI pipeline

Parameters:
  • options (Hash) -- A customizable set of options.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def rebase_merge_request(project, id, options = {})
  put("/projects/#{url_encode project}/merge_requests/#{id}/rebase", body: options)
end

def resolve_merge_request_discussion(project, merge_request_id, discussion_id, options)

Returns:
  • (Gitlab::ObjectifiedHash) - The merge request discussion.

Options Hash: (**options)
  • :resolved (Boolean) -- Resolve/unresolve the discussion.

Parameters:
  • options (Hash) -- A customizable set of options.
  • discussion_id (Integer) -- The ID of a discussion.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def resolve_merge_request_discussion(project, merge_request_id, discussion_id, options)
  put("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}", body: options)
end

def subscribe_to_merge_request(project, id)

Returns:
  • (Gitlab::ObjectifiedHash) - Information about subscribed merge request.

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def subscribe_to_merge_request(project, id)
  post("/projects/#{url_encode project}/merge_requests/#{id}/subscribe")
end

def unsubscribe_from_merge_request(project, id)

Returns:
  • (Gitlab::ObjectifiedHash) - Information about unsubscribed merge request.

Parameters:
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def unsubscribe_from_merge_request(project, id)
  post("/projects/#{url_encode project}/merge_requests/#{id}/unsubscribe")
end

def update_merge_request(project, id, options = {})

Returns:
  • (Gitlab::ObjectifiedHash) - Information about updated merge request.

Options Hash: (**options)
  • :state_event (String) -- New state (close|reopen|merge).
  • :assignee_id (Integer) -- The ID of a user to assign merge request.
  • :target_branch (String) -- The target branch name.
  • :source_branch (String) -- The source branch name.
  • :title (String) -- The title of a merge request.

Parameters:
  • options (Hash) -- A customizable set of options.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def update_merge_request(project, id, options = {})
  put("/projects/#{url_encode project}/merge_requests/#{id}", body: options)
end

def update_merge_request_discussion_note(project, merge_request_id, discussion_id, note_id, options)

Returns:
  • (Gitlab::ObjectifiedHash) - The merge request discussion note.

Options Hash: (**options)
  • :resolved (Boolean) -- Resolve/unresolve the note.
  • :body (String) -- The content of a discussion.

Parameters:
  • options (Hash) -- A customizable set of options.
  • note_id (Integer) -- The ID of a discussion note.
  • discussion_id (Integer) -- The ID of a discussion.
  • id (Integer) -- The ID of a merge request.
  • project (Integer, String) -- The ID or name of a project.
def update_merge_request_discussion_note(project, merge_request_id, discussion_id, note_id, options)
  put("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}/notes/#{note_id}", body: options)
end

def user_merge_requests(options = {})

Returns:
  • (Array) -

Parameters:
  • options (Hash) -- A customizable set of options.
def user_merge_requests(options = {})
  get('/merge_requests', query: options)
end