module Gitlab::Client::MergeRequests

Defines methods related to merge requests. @see docs.gitlab.com/ce/api/merge_requests.html

Public Instance Methods

accept_merge_request(project, id, options = {}) click to toggle source

Accepts a merge request.

@example

Gitlab.accept_merge_request(5, 42, { merge_commit_message: 'Nice!' })

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Hash] options A customizable set of options. @option options [String] :merge_commit_message(optional) Custom merge commit message @option options [String] :squash_commit_message(optional) Custom squash commit message @option options [Boolean] :squash(optional) if true the commits will be squashed into a single commit on merge @option options [Boolean] :should_remove_source_branch(optional) if true removes the source branch @option options [Boolean] :merge_when_pipeline_succeeds(optional) if true the MR is merged when the pipeline succeeds @option options [String] :sha(optional) if present, then this SHA must match the HEAD of the source branch, otherwise the merge will fail @return [Gitlab::ObjectifiedHash] Information about updated merge request.

# File lib/gitlab/client/merge_requests.rb, line 166
def accept_merge_request(project, id, options = {})
  put("/projects/#{url_encode project}/merge_requests/#{id}/merge", body: options)
end
create_merge_request(project, title, options = {}) click to toggle source

Creates a merge request.

@example

Gitlab.create_merge_request(5, 'New merge request',
  { source_branch: 'source_branch', target_branch: 'target_branch' })
Gitlab.create_merge_request(5, 'New merge request',
  { source_branch: 'source_branch', target_branch: 'target_branch', assignee_id: 42 })

@param [Integer, String] project The ID or name of a project. @param [String] title The title of a merge request. @param [Hash] options A customizable set of options. @option options [String] :source_branch (required) The source branch name. @option options [String] :target_branch (required) The target branch name. @option options [Integer] :assignee_id (optional) The ID of a user to assign merge request. @option options [Array<Integer>] :assignee_ids (optional) The ID of the user(s) to assign the MR to. Set to 0 or provide an empty value to unassign all assignees. @option options [String] :description (optional) Description of MR. Limited to 1,048,576 characters. @option options [Integer] :target_project_id (optional) The target project ID. @option options [String] :labels (optional) Labels as a comma-separated list. @option options [Integer] :milestone_id (optional) The global ID of a milestone @option options [Boolean] :remove_source_branch (optional) Flag indicating if a merge request should remove the source branch when merging @option options [Boolean] :allow_collaboration (optional) Allow commits from members who can merge to the target branch @option options [Boolean] :squash (optional) Squash commits into a single commit when merging @return [Gitlab::ObjectifiedHash] Information about created merge request.

# File lib/gitlab/client/merge_requests.rb, line 128
def create_merge_request(project, title, options = {})
  body = { title: title }.merge(options)
  post("/projects/#{url_encode project}/merge_requests", body: body)
end
create_merge_request_discussion(project, merge_request_id, options = {}) click to toggle source

Create new merge request discussion

@example

Gitlab.create_merge_request_discussion(5, 1, body: 'discuss')
Gitlab.create_merge_request_discussion('gitlab', 1, body: 'discuss')

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Hash] options A customizable set of options.

* :body (String) The content of a discussion
* :created_at (String) Date time string, ISO 8601 formatted, e.g. 2016-03-11T03:45:40Z
* :position (Hash) Position when creating a diff note
  * :base_sha (String) Base commit SHA in the source branch
  * :start_sha (String) SHA referencing commit in target branch
  * :head_sha (String) SHA referencing HEAD of this merge request
  * :position_type (String) Type of the position reference', allowed values: 'text' or 'image'
  * :new_path (String) File path after change
  * :new_line (Integer) Line number after change (for 'text' diff notes)
  * :old_path (String) File path before change
  * :old_line (Integer) Line number before change (for 'text' diff notes)
  * :width (Integer) Width of the image (for 'image' diff notes)
  * :height (Integer) Height of the image (for 'image' diff notes)
  * :x (Integer) X coordinate (for 'image' diff notes)
  * :y (Integer) Y coordinate (for 'image' diff notes)

@return [Gitlab::ObjectifiedHash] The created merge request discussion.

# File lib/gitlab/client/merge_requests.rb, line 282
def create_merge_request_discussion(project, merge_request_id, options = {})
  post("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions", body: options)
end
create_merge_request_discussion_note(project, merge_request_id, discussion_id, options) click to toggle source

Add note to existing merge request discussion

@example

Gitlab.create_merge_request_discussion_note(5, 1, 1, note_id: 1, body: 'note')
Gitlab.create_merge_request_discussion_note('gitlab', 1, 1, note_id: 1, body: 'note')

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Integer] discussion_id The ID of a discussion. @param [Hash] options A customizable set of options. @option options [Integer] :note_id The ID of a discussion note. @option options [String] :body The content of a discussion. @option options [String] :created_at Date time string, ISO 8601 formatted, e.g. 2016-03-11T03:45:40Z. @return [Gitlab::ObjectifiedHash] The merge request discussion note.

# File lib/gitlab/client/merge_requests.rb, line 314
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
create_merge_request_pipeline(project, iid) click to toggle source

Create a new pipeline for a merge request. A pipeline created via this endpoint doesnt run a regular branch/tag pipeline. It requires .gitlab-ci.yml to be configured with only: [merge_requests] to create jobs.

The new pipeline can be:

A detached merge request pipeline. A pipeline for merged results if the project setting is enabled.

@example

Gitlab.create_merge_request_pipeline(5, 36)

@param [Integer, String] project The ID or name of a project. @param [Integer] iid The internal ID of a merge request. @return [Gitlab::ObjectifiedHash]

# File lib/gitlab/client/merge_requests.rb, line 89
def create_merge_request_pipeline(project, iid)
  post("/projects/#{url_encode project}/merge_requests/#{iid}/pipelines")
end
delete_merge_request(project, merge_request_id) click to toggle source

Delete a merge request

@example

Gitlab.delete_merge_request(5, 1)
Gitlab.delete_merge_request('gitlab', 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Gitlab::ObjectifiedHash] An empty response.

# File lib/gitlab/client/merge_requests.rb, line 357
def delete_merge_request(project, merge_request_id)
  delete("/projects/#{url_encode project}/merge_requests/#{merge_request_id}")
end
delete_merge_request_discussion_note(project, merge_request_id, discussion_id, note_id) click to toggle source

Delete a merge request discussion note

@example

Gitlab.delete_merge_request_discussion_note(5, 1, 1, 1)
Gitlab.delete_merge_request_discussion_note('gitlab', 1, 1, 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Integer] discussion_id The ID of a discussion. @param [Integer] note_id The ID of a discussion note. @return [Gitlab::ObjectifiedHash] An empty response.

# File lib/gitlab/client/merge_requests.rb, line 345
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
merge_request(project, id, options = {}) click to toggle source

Gets a single merge request.

@example

Gitlab.merge_request(5, 36)
Gitlab.merge_request(5, 36, { include_diverged_commits_count: true })

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @option options [Boolean] :render_html If true response includes rendered HTML for title and description. @option options [Boolean] :include_diverged_commits_count If true response includes the commits behind the target branch. @option options [Boolean] :include_rebase_in_progress If true response includes whether a rebase operation is in progress. @return <Gitlab::ObjectifiedHash]

# File lib/gitlab/client/merge_requests.rb, line 46
def merge_request(project, id, options = {})
  get("/projects/#{url_encode project}/merge_requests/#{id}", query: options)
end
merge_request_changes(project, id) click to toggle source

Gets the changes of a merge request.

@example

Gitlab.merge_request_changes(5, 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Gitlab::ObjectifiedHash] The merge request’s changes.

# File lib/gitlab/client/merge_requests.rb, line 178
def merge_request_changes(project, id)
  get("/projects/#{url_encode project}/merge_requests/#{id}/changes")
end
merge_request_closes_issues(project_id, merge_request_iid) click to toggle source

List issues that will close on merge

@example

Gitlab.merge_request_closes_issues(5, 1)

@param [Integer] project The ID of a project @param [Integer] iid The internal ID of a merge request

# File lib/gitlab/client/merge_requests.rb, line 201
def merge_request_closes_issues(project_id, merge_request_iid)
  get("/projects/#{url_encode project_id}/merge_requests/#{merge_request_iid}/closes_issues")
end
merge_request_commits(project, id) click to toggle source

Gets the commits of a merge request.

@example

Gitlab.merge_request_commits(5, 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Array<Gitlab::ObjectifiedHash>] The merge request’s commits.

# File lib/gitlab/client/merge_requests.rb, line 190
def merge_request_commits(project, id)
  get("/projects/#{url_encode project}/merge_requests/#{id}/commits")
end
merge_request_dependencies(project, id) click to toggle source

Shows information about the merge request dependencies that must be resolved before merging.

@example

Gitlab.merge_request_dependencies(5, 36)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/merge_requests.rb, line 70
def merge_request_dependencies(project, id)
  get("/projects/#{url_encode project}/merge_requests/#{id}/blocks")
end
merge_request_diff_version(project, merge_request_id, version_id) click to toggle source

Gets the diff a single merge request diff version\

@example

Gitlab.merge_request_diff_version(5, 1, 1)
Gitlab.merge_request_diff_version('gitlab', 1, 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Integer] id The ID of a merge request diff version. @return [Gitlab::ObjectifiedHash] Record of the specific diff

# File lib/gitlab/client/merge_requests.rb, line 394
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
merge_request_diff_versions(project, merge_request_id) click to toggle source

Gets a list of merge request diff versions

@example

Gitlab.merge_request_versions(5, 1)
Gitlab.merge_request_versions('gitlab', 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Gitlab::ObjectifiedHash] A list of the merge request versions.

# File lib/gitlab/client/merge_requests.rb, line 381
def merge_request_diff_versions(project, merge_request_id)
  get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/versions")
end
merge_request_diffs(project, merge_request_id) click to toggle source

Gets a list of merge request diffs

@example

Gitlab.merge_request_diffs(5, 1)
Gitlab.merge_request_diffs('gitlab', 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Gitlab::ObjectifiedHash] A list of the merge request diffs.

# File lib/gitlab/client/merge_requests.rb, line 369
def merge_request_diffs(project, merge_request_id)
  get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/diffs")
end
merge_request_discussion(project, merge_request_id, discussion_id) click to toggle source

Get single merge request discussion

@example

Gitlab.merge_request_discussion(5, 1, 1)
Gitlab.merge_request_discussion('gitlab', 1, 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Integer] discussion_id The ID of a discussion. @return [Gitlab::ObjectifiedHash] The merge request discussion.

# File lib/gitlab/client/merge_requests.rb, line 254
def merge_request_discussion(project, merge_request_id, discussion_id)
  get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}")
end
merge_request_discussions(project, merge_request_id, options = {}) click to toggle source

List project merge request discussions

@example

Gitlab.merge_request_discussions(5, 1)
Gitlab.merge_request_discussions('gitlab', 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @option options [Integer] :page The page number. @option options [Integer] :per_page The number of results per page. @return [Gitlab::ObjectifiedHash] List of the merge request discussions.

# File lib/gitlab/client/merge_requests.rb, line 241
def merge_request_discussions(project, merge_request_id, options = {})
  get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions", query: options)
end
merge_request_participants(project, id) click to toggle source

Get a list of merge request participants.

@example

Gitlab.merge_request_participants(5, 36)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/merge_requests.rb, line 101
def merge_request_participants(project, id)
  get("/projects/#{url_encode project}/merge_requests/#{id}/participants")
end
merge_request_pipelines(project, id) click to toggle source

Gets a list of merge request pipelines.

@example

Gitlab.merge_request_pipelines(5, 36)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/merge_requests.rb, line 58
def merge_request_pipelines(project, id)
  get("/projects/#{url_encode project}/merge_requests/#{id}/pipelines")
end
merge_requests(project, options = {}) click to toggle source

Gets a list of project merge requests.

@example

Gitlab.merge_requests(5)
Gitlab.merge_requests(5, { per_page: 40 })

@param [Integer, String] project The ID or name of a project. @param [Hash] options A customizable set of options. @option options [Integer] :page The page number. @option options [Integer] :per_page The number of results per page. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/merge_requests.rb, line 30
def merge_requests(project, options = {})
  get("/projects/#{url_encode project}/merge_requests", query: options)
end
rebase_merge_request(project, id, options = {}) click to toggle source

Rebase a merge request.

@example

Gitlab.rebase_merge_request(5, 42, { skip_ci: true })

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Hash] options A customizable set of options. @option options [String] :skip_ci Set to true to skip creating a CI pipeline @return [Gitlab::ObjectifiedHash] Rebase progress status

# File lib/gitlab/client/merge_requests.rb, line 408
def rebase_merge_request(project, id, options = {})
  put("/projects/#{url_encode project}/merge_requests/#{id}/rebase", body: options)
end
resolve_merge_request_discussion(project, merge_request_id, discussion_id, options) click to toggle source

Resolve a merge request discussion

@example

Gitlab.resolve_merge_request_discussion(5, 1, 1, true)
Gitlab.resolve_merge_request_discussion('gitlab', 1, 1, false)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Integer] discussion_id The ID of a discussion. @param [Hash] options A customizable set of options. @option options [Boolean] :resolved Resolve/unresolve the discussion. @return [Gitlab::ObjectifiedHash] The merge request discussion.

# File lib/gitlab/client/merge_requests.rb, line 297
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
subscribe_to_merge_request(project, id) click to toggle source

Subscribes to a merge request.

@example

Gitlab.subscribe_to_merge_request(5, 1)
Gitlab.subscribe_to_merge_request('gitlab', 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Gitlab::ObjectifiedHash] Information about subscribed merge request.

# File lib/gitlab/client/merge_requests.rb, line 214
def subscribe_to_merge_request(project, id)
  post("/projects/#{url_encode project}/merge_requests/#{id}/subscribe")
end
unsubscribe_from_merge_request(project, id) click to toggle source

Unsubscribes from a merge request.

@example

Gitlab.unsubscribe_from_merge_request(5, 1)
Gitlab.unsubscribe_from_merge_request('gitlab', 1)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @return [Gitlab::ObjectifiedHash] Information about unsubscribed merge request.

# File lib/gitlab/client/merge_requests.rb, line 227
def unsubscribe_from_merge_request(project, id)
  post("/projects/#{url_encode project}/merge_requests/#{id}/unsubscribe")
end
update_merge_request(project, id, options = {}) click to toggle source

Updates a merge request.

@example

Gitlab.update_merge_request(5, 42, { title: 'New title' })

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Hash] options A customizable set of options. @option options [String] :title The title of a merge request. @option options [String] :source_branch The source branch name. @option options [String] :target_branch The target branch name. @option options [Integer] :assignee_id The ID of a user to assign merge request. @option options [String] :state_event New state (close|reopen|merge). @return [Gitlab::ObjectifiedHash] Information about updated merge request.

# File lib/gitlab/client/merge_requests.rb, line 147
def update_merge_request(project, id, options = {})
  put("/projects/#{url_encode project}/merge_requests/#{id}", body: options)
end
update_merge_request_discussion_note(project, merge_request_id, discussion_id, note_id, options) click to toggle source

Modify an existing merge request discussion note

@example

Gitlab.update_merge_request_discussion_note(5, 1, 1, 1, body: 'note')
Gitlab.update_merge_request_discussion_note('gitlab', 1, 1, 1, body: 'note')

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of a merge request. @param [Integer] discussion_id The ID of a discussion. @param [Integer] note_id The ID of a discussion note. @param [Hash] options A customizable set of options. @option options [String] :body The content of a discussion. @option options [Boolean] :resolved Resolve/unresolve the note. @return [Gitlab::ObjectifiedHash] The merge request discussion note.

# File lib/gitlab/client/merge_requests.rb, line 331
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
user_merge_requests(options = {}) click to toggle source

Gets a list of all of the merge requests the authenticated user has access to.

@example

Gitlab.user_merge_requests
Gitlab.user_merge_requests(state: :opened, scope: :all)

@param [Hash] options A customizable set of options. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/merge_requests.rb, line 15
def user_merge_requests(options = {})
  get('/merge_requests', query: options)
end